7

我正在尝试从我的计算机导入现有密钥对以在 EC2 中使用。ssh -lf但是,一旦我单击“是,导入”,亚马逊显示的指纹与同一键显示的指纹不匹配。我已经验证它们是相同的密钥,尝试重新导入密钥等。常见的做法似乎是使用“创建密钥对”部分,但我更喜欢使用我通常的 SSH 密钥对。我也无法使用 SSH 登录到设置为使用此密钥对的实例(我得到了Permission denied (publickey).)。

有人在使用 AWS 时遇到过此类问题吗?对问题可能是什么有任何见解?

4

2 回答 2

10

AWS 论坛上似乎有指纹差异的答案。我将内容粘贴在这里以供后代使用:

你好,

我和我的同事讨论过,看起来提供不同格式的密钥对是我们的限制。您会注意到亚马逊生成的密钥对和导入密钥对的不同长度。对于亚马逊生成的密钥对,指纹用于私钥,而如果您使用导入密钥对,指纹用于您的公钥。Amazon 不保留生成的私钥的副本,但 EC2 命令行工具确实提供了一种重现 SSH2 MD5 指纹的方法:

ec2-fingerprint-key ./testpair1-private.pem 61:26:cc:7d:2a:2c:a4:e9:fb:86:ca:ef:57:d6:68:f8:24:bc:59:光盘

这应该与您在控制台中为您创建密钥的区域看到的内容相匹配,例如 US-West-1(北加利福尼亚)。不幸的是,ec2-fingerprint-key 命令行工具不会对公钥进行指纹识别。如果您在 US-East-1 等其他区域导入公有密钥,Web AWS 控制台将仅显示公有密钥的指纹。

其次,AWS 控制台应该更清楚地显示它所显示的指纹类型,即“RFC4716 第 4 节中指定的 MD5 公钥指纹”(也称为 SSH2 格式),如下所述:

http://docs.amazonwebservices.com/AWSEC2/latest/CommandLineReference/ApiReference-cmd-ImportKeyPair.html

我们已经为基于 Web 的 AWS 控制台提出了功能请求,以支持更常见的 OpenSSH 格式。不幸的是,我找不到任何用户友好的工具来生成 SSH2/RFC4716 格式指纹,尽管我确实发现您可以在原始区域中导入相同的公钥(名称如“Test2”)并匹配显示区域之间的指纹。

(强调我的)

正如他所提到的,我也找不到任何工具来生成 SSH2/RFC4716 格式指纹。这至少解决了指纹不匹配的谜团(至少如果我们假设ssh-keygen -lf以“更常见的 OpenSSH 格式”输出,如果这个假设是错误的,请纠正我);Permission denied (publickey)当我尝试 ssh 时,我仍然得到一个,但我会假设它现在不是真正的密钥不匹配并探索其他途径。

于 2013-10-08T17:36:32.427 回答
3

这是验证指纹的另一种方法:

openssl pkcs8 -in my-aws-key.pem -nocrypt -topk8 -outform DER | openssl sha1 -c
于 2018-05-18T17:10:40.860 回答