使用sed替换RSA密钥文件中\n为换行解决pem格式无效报错
报错原因
PEM格式的RSA私钥对格式要求非常严格,必须在指定位置换行才能被SSH正常识别。你当前的密钥文件里所有换行位置都被存储为字面量\n,还混有多余的<strong>HTML标签和冗余空格,所以SSH读取时会触发invalid format格式错误。
操作步骤
先备份原密钥文件,避免操作失误丢失密钥:
cp abc.pem abc.pem.origin执行sed命令完成格式修复:
sed -i 's/<\/\?strong>//g; s/ *\\n */\n/g' abc.pem
命令说明:第一段
s/<\/\?strong>//g作用是全局删除所有多余的<strong>、</strong>HTML标签
第二段s/ *\\n */\n/g作用是把所有前后带空格的字面量\n替换为真实的换行符如果你使用的是macOS系统,自带的sed语法存在差异,需要改成以下命令:
sed -i '' 's/<\/\?strong>//g; s/ *\\n */\
/g' abc.pem
- 修复完成后调整私钥权限,SSH要求私钥仅所有者可读写,否则也会触发权限类报错: `chmod 600 abc.pem` - 直接测试SSH登录验证是否正常即可。 # 异常排查 如果修复后仍然提示格式错误,可以执行`cat -A abc.pem`查看文件内的不可见字符,确认没有残留多余的转义字符、空格即可。 内容的提问来源于stack exchange,提问作者Sarthak Saxena
相关产品推荐
相关产品推荐

