如何验证我拥有的私钥是否与 AWS 密钥对匹配?

如何验证我拥有的私钥是否与 AWS 密钥对匹配?

我的 AWS 实例显示它配置为使用我帐户中唯一的密钥对,并且其指纹格式如下:

3c:64:a7:85:53:3f:81:1c:24:5a:d2:6a:5b:76:47:da:f3:14:63:88

我的电脑上有一个 key.pem 文件。我如何验证该 pem 文件是否与 AWS 提供的上述密钥对指纹匹配?

我尝试了以下操作:ssh-keygen -lf key.pem

输出以下格式的内容:2048 SHA256:TpL6i8y1uCd26IUVVc5UHFluP7GLKD/T3O1+K4Pc0qg 无注释(RSA)

编码方案不同,我无法判断它们是否等效。

我正在尝试调试为什么我无法使用此密钥通过 ssh 进入我的实例,这是我尝试的第一步。

答案1

有两种方法,具体取决于您如何创建 SSH 密钥,具体方法请参见验证密钥对的指纹在 AWS 文档中。

这是控制台中的 SSH 密钥指纹:

EC2 密钥对屏幕截图

以下是如何从命令行获取相同的指纹:

~ $ openssl rsa -in ~/.ssh/aws-sandpit.pem -pubout -outform DER | openssl md5 -c
writing RSA key
(stdin)= ae:ae:56:84:f9:72:c4:d1:0a:b8:e9:3b:ab:d4:a7:00

如果不匹配,请尝试以下操作:

~ $ openssl pkcs8 -in path_to_private_key -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c

希望有帮助:)

答案2

过去,ssh-keygen使用十六进制编码的 MD5 哈希显示指纹。最近,OpenSSH 增加了对 base64 编码的 SHA-256 的支持,并将默认设置更改为 base64 编码的 SHA-256。

您可以添加选项“ -E md5”来使用旧格式,尽管它现在将以“ ”为前缀MD5:

$ ssh-keygen -lf id_ed25519
256 SHA256:4gU2OwTypjq8lE6CvwTUZYQ6gyRRqXvKsZt1yUAGC2s mnordhoff@jane (ED25519)

$ ssh-keygen -lf id_ed25519 -E md5
256 MD5:41:e3:9f:30:a7:92:66:70:18:18:7d:e7:cd:66:ba:1d mnordhoff@jane (ED25519)

相关内容