即使使用正确的私钥,Windows 密码也不会在 AWS EC2 上解密

Cra*_*ger 24 windows amazon-ec2 ssh-keys

我在 AWS EC2 上创建了一个新的 Windows 实例,使用我通过从本地机器上传我的公钥创建的密钥对。

实例启动正常,但不会解密密码。它报告:

私钥必须以“-----BEGIN RSA PRIVATE KEY-----”开头并以“-----END RSA PRIVATE KEY-----”结尾

我确定我上传了正确的密钥。我已经验证指纹与 AWS 使用的奇怪指纹格式匹配。但它只是不会解密。

我试过上传密钥文件,并将其粘贴到表单中。

我最终发现它没有剥离尾随的换行符,并删除了键中的空行。但是,当我单击“解密密码”时,这只会让我遇到一个新错误:

解密您的密码时出错。 请确保您已正确输入您的私钥。

Cra*_*ger 25

AWS EC2 的密钥管理不处理设置了密码(已加密)的 SSH 私有密钥。它不会检测到这一点,并且只会因无信息错误而失败。

如果您的私钥以加密方式存储在磁盘上(就像它应该是,IMO),您必须解密它以将其粘贴到 AWS 的控制台中。

与其这样做,不如考虑在本地解密密码,这样您就不必将私有密钥发送到 AWS。启动后从服务器日志中获取加密的密码数据(base64编码),或者使用get-password-data或者相应的API请求。

然后,您可以对结果进行 base64 解码和解密:

base64 -d /tmp/file | openssl rsautl -decrypt -inkey /path/to/aws/private/key.pem
Run Code Online (Sandbox Code Playgroud)

(OpenSSH 私钥被 接受openssl rsautl)。

与没有处理密码保护的密钥提供一个有用的错误的问题也影响ec2-get-password命令

也可以看看:

  • 在 OS X 中,我会在该管道中再添加一个命令:`aws ec2 get-password-data "--instance-id=${instance_id}" | jq -r .PasswordData | base64 -D | openssl rsautl -decrypt -inkey ${my_key} | pbcopy` ...将密码直接发送到您的剪贴板。 (3认同)

Dja*_*rdt 5

这就是在 macOS 中对我有用的方法:

openssl rsa -in $HOME/.ssh/aws-remote -out /Users/home/desktop/unencrypted-rsa.txt

请注意,您可以通过查找以下行来判断您的 .pem 文件是否使用密码加密。如果它存在,您需要在与亚马逊一起使用之前对其进行解密:

Proc-Type: 4,ENCRYPTED
Run Code Online (Sandbox Code Playgroud)