如何修改sed命令去除AWS SSM私钥输出结尾的多余字符?
解决AWS SSM Parameter Store提取私钥后结尾多余字符的问题
我之前也碰到过一模一样的情况!你当前的sed命令只处理了私钥开头的多余内容,但没对结尾的冗余字符(比如你提到的“2”)做处理,所以才会出现这个问题。
这里给你两个靠谱的修改方案:
方案1:精准截取私钥的完整块
这个方法直接匹配私钥的起始和结束标记,只打印这两行之间的内容(包括标记本身),完全过滤掉前后的多余字符:
aws --region=us-east-1 ssm get-parameters --names "mykey" --with-decryption --output text 2>&1 | sed -n '/----BEGIN RSA PRIVATE KEY----/,/----END RSA PRIVATE KEY----/p' > id_rsa
原理:-n参数让sed只打印我们指定的内容,/A/,/B/p表示打印从匹配A的行到匹配B的行之间的所有内容,完美规避前后的无关输出。
方案2:基于原命令调整,同时处理首尾
如果你想沿用原来的命令逻辑,可以给sed追加第二个替换规则,把结束标记后的所有冗余内容清空:
aws --region=us-east-1 ssm get-parameters --names "mykey" --with-decryption --output text 2>&1 | sed 's/.*----BEGIN/----BEGIN/; s/----END RSA PRIVATE KEY-----.*/----END RSA PRIVATE KEY-----/' > id_rsa
原理:分号分隔两个sed命令,第一个处理开头的多余前缀,第二个用.*匹配结束标记后的所有字符,替换成纯净的结束标记。
最后别忘了关键一步
私钥文件的权限必须严格限制(不能让其他用户读取),否则SSH会直接拒绝使用这个密钥,生成文件后记得执行:
chmod 600 id_rsa
内容的提问来源于stack exchange,提问作者H RH
相关产品推荐
相关产品推荐

