我正在尝试从我的计算机导入现有的密钥对,以便在EC2中使用。但是,一旦我点击“是,导入”,亚马逊显示的指纹与ssh -lf
显示的指纹不匹配相同的密钥。我已经验证它们是相同的密钥,尝试重新导入密钥等。通常的做法似乎是使用“创建密钥对”部分,但我更喜欢使用我通常的SSH密钥对。我也无法使用SSH登录到设置为使用此密钥对的实例(我得到Permission denied (publickey).
)。
有没有人遇到AWS的这类问题?对问题可能是什么的任何见解?
答案 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节中指定为 这里提到:
我们已经为基于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