我使用通过从本地计算机上载公钥而创建的密钥对,在AWS EC2上创建了一个新的Windows实例。
该实例启动正常,但不会解密密码。它报告:
我确定我上传了正确的密钥。我已验证指纹是否与AWS使用的怪异指纹格式匹配。但是它不会解密。
我尝试上传密钥文件,并将其粘贴到表单中。
我最终发现它不会剥离尾随的换行符,并删除了键中的空白行。但是,当我单击“解密密码”时,这使我遇到了一个新错误:
我使用通过从本地计算机上载公钥而创建的密钥对,在AWS EC2上创建了一个新的Windows实例。
该实例启动正常,但不会解密密码。它报告:
我确定我上传了正确的密钥。我已验证指纹是否与AWS使用的怪异指纹格式匹配。但是它不会解密。
我尝试上传密钥文件,并将其粘贴到表单中。
我最终发现它不会剥离尾随的换行符,并删除了键中的空白行。但是,当我单击“解密密码”时,这使我遇到了一个新错误:
Answers:
AWS EC2的密钥管理无法处理已设置密码(已加密)的SSH私钥。它不会检测到此错误,只会失败,并显示错误信息。
如果您的私钥以加密方式存储在磁盘上(应该是IMO),则必须对其进行解密以将其粘贴到AWS控制台中。
与其这样做,不如考虑在本地解密密码,因此您不必将私钥发送到AWS。启动后或使用get-password-data或相应的API请求从服务器日志中获取加密的密码数据(以base64编码)。
然后,您可以对结果进行base64解码和解密:
base64 -d /tmp/file | openssl rsautl -decrypt -inkey /path/to/aws/private/key.pem
(OpenSSH私钥被接受openssl rsautl
)。
无法处理带有有用错误的受密码保护的密钥的问题也会影响该ec2-get-password
命令。
也可以看看:
-d
这样-D
对我的作品。在OS X上即时通讯
aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} | pbcopy
...,它将密码直接发送到剪贴板。
这是在macOS中对我有用的东西:
openssl rsa -in $HOME/.ssh/aws-remote -out /Users/home/desktop/unencrypted-rsa.txt
值得注意的是,您可以通过查找以下行来判断您的.pem文件是否已使用密码加密。如果存在,则需要先将其解密,然后再与Amazon结合使用:
Proc-Type: 4,ENCRYPTED
这会工作
aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key}
使用aws-cli和 jq)。