首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GPG卡上ssh密钥解密数据

使用GPG卡上ssh密钥解密数据
EN

Server Fault用户
提问于 2019-11-04 13:36:05
回答 1查看 357关注 0票数 1

当在AWS中创建Windows实例时,其密码将使用SSH密钥的公共部分进行加密。

然后可以使用以下命令检索加密的密码:

代码语言:javascript
复制
 aws ec2 get-password-data --instance-id=i-0a5102eb55ed6e0b9

(见https://docs.aws.amazon.com/cli/latest/reference/ec2/get-password-data.html#examples)

该命令返回以下数据:

代码语言:javascript
复制
{
    "InstanceId": "i-0a5102eb55ed6e0b9",
    "Timestamp": "2019-11-04T12:21:30.000Z",
    "PasswordData": "\r\nbase64_data==\r\n"
}

加密的密码数据是base64编码的,但如果您拥有SSH密钥的私有部分,则可以解密"PasswordData“字段:

代码语言:javascript
复制
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的公钥。

有办法用卡解密数据吗?

EN

回答 1

Server Fault用户

发布于 2020-09-30 22:41:31

在Linux上,我还没有找到一个基于GPG的等价物,但是您可以使用PKCS#11接口来实现这一点。我有一个使用Yubikey和记录了这个过程的类似设置,但是tl;dr是:

  1. 将密钥加载到密钥的PKCS#11区域。在Yubikey,这是PIV,对于硝基钥匙,你会想要确保你有支持PKCS#11的硬件。在Yubikey上,您不能使用在设备上生成密钥,因此您需要使用空隙机器生成密钥,然后根据需要加载密钥。
  2. 使用pkcs11 11工具执行解密。在Linux上,我通常需要删除/重新插入我的设备,否则puts 11工具在我使用过一次之后就会丢失在我的卡上的锁gpg代理。

要解密的相关命令如下所示:

代码语言:javascript
复制
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-PKCS
票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/990509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档