将密钥对导入Amazon AWS - 错误的指纹?

时间:2013-10-08 15:11:51

标签: amazon-web-services ssh amazon-ec2

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

有没有人遇到AWS的这类问题?对问题可能是什么的任何见解?

2 个答案:

答案 0 :(得分:9)

指纹差异似乎有an answer in the AWS forums。我把这些内容粘贴给后人:

  

您好,

     

我与同事们讨论过,看起来这是一个限制   我们以不同的格式提供密钥对。你会注意到的   亚马逊生成的密钥对和导入密钥的不同长度   对。在亚马逊生成的密钥对的情况下,指纹是   对于私钥,如果您使用导入密钥对指纹   是为了你的公钥。亚马逊不保留生成的副本   私钥,但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:CD

     

这应该与您在控制台中看到的区域相匹配   你创建了密钥,例如US-West-1(北加州)。   不幸的是,ec2-fingerprint-key命令行工具却没有   指纹公钥。如果您在另一个公钥中导入公钥   如US-East-1这样的区域,web AWS Console将只显示   公钥的指纹。

     

其次, AWS控制台应该更清楚确切的类型   它显示的指纹,即“MD5公钥指纹为   在RFC4716“(也称为SSH2格式)的第4节中指定为   这里提到:

     

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

     

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

(强调我的)

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

答案 1 :(得分:1)

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

openssl pkcs8 -in my-aws-key.pem -nocrypt -topk8 -outform DER | openssl sha1 -c