当在AWS中创建Windows实例时,其密码将使用SSH密钥的公共部分进行加密。
然后可以使用以下命令检索加密的密码:
aws ec2 get-password-data --instance-id=i-0a5102eb55ed6e0b9(见https://docs.aws.amazon.com/cli/latest/reference/ec2/get-password-data.html#examples)
该命令返回以下数据:
{
"InstanceId": "i-0a5102eb55ed6e0b9",
"Timestamp": "2019-11-04T12:21:30.000Z",
"PasswordData": "\r\nbase64_data==\r\n"
}加密的密码数据是base64编码的,但如果您拥有SSH密钥的私有部分,则可以解密"PasswordData“字段:
echo "base64_data" | base64 --decode | openssl rsautl -decrypt -inkey "./path_to_private_ssh_key"(参见https://github.com/tomrittervg/decrypt-windows-ec2-passwd/blob/master/decrypt-windows-ec2-passwd.sh中的Github示例)
这很好,但是,我使用Nitrokey来存储我的私钥,我找不到一种方法可以告诉openssl命令使用GPG卡来解密数据。如果可能的话,我想把私钥放在磁盘上。
作为参考,为了将公钥导入AWS,我使用gpg --export-ssh-key nameofuser@example.com命令以正确的SSH格式导出了AWS的公钥。
有办法用卡解密数据吗?
发布于 2020-09-30 22:41:31
在Linux上,我还没有找到一个基于GPG的等价物,但是您可以使用PKCS#11接口来实现这一点。我有一个使用Yubikey和记录了这个过程的类似设置,但是tl;dr是:
要解密的相关命令如下所示:
aws ec2 get-password-data --instance-id <blah> --query PasswordData --output text| base64 -d > encrypted-adminpass.bin
pkcs11-tool --decrypt -v -l --input-file encrypted-adminpass.bin -m RSA-PKCShttps://serverfault.com/questions/990509
复制相似问题