我必须将RSA私钥转换为一行以存储在密码管理器中(密码状态(。我用tr -d 'n' < id_rsa
转换为单行,cat id_rsa.line | sed -e "s/-----BEGIN RSA PRIVATE KEY-----/&n/" -e "s/S{64}/&n/g"
转换回原来的多行。
转换回多行在 Ubuntu 上有效,但在 Mac 上不起作用。为什么这在Macbook上不起作用
请尝试:
LF=$'\x0A'
cat id_rsa.line | sed -e "s/-----BEGIN RSA PRIVATE KEY-----/&${LF}/" -e "s/-----END RSA PRIVATE KEY-----/${LF}&${LF}/" | sed -e "s/[^[:blank:]]{64}/&${LF}/g"
或
LF=$'\x0A'
cat id_rsa.line | sed -e "s/-----BEGIN RSA PRIVATE KEY-----/&${LF}/" -e "s/-----END RSA PRIVATE KEY-----/${LF}&${LF}/" | fold -w 64
非 GNUsed
不会将替换中的 "" 解释为换行符。 解决方法是将变量分配给换行符并将其嵌入替换中。
请注意,我保留了UUC以提高可读性:P。
建立在tshiono的答案之上。编写了一个 shell 脚本来实现相同的目的:
#!/bin/sh
# Convert single-line certificate to multi-line certificate
echo "$1" > secret
LF=$'\x0A'; cat secret | sed -e "s/-----BEGIN RSA PRIVATE KEY-----/&${LF}/" -e "s/-----END RSA PRIVATE KEY-----/${LF}&${LF}/" | sed -e "s/[^[:blank:]]{64}/&${LF}/g" > secret-temp
x=`echo "-----BEGIN RSA PRIVATE KEY-----"; cat secret-temp; echo "-----END RSA PRIVATE KEY-----"`
echo "$x" > secret.pem
echo "nn## Private Key ##nn"
cat secret.pem