当我使用新的 EC2 生成的密钥对创建运行 Ubuntu 18.04 的新 EC2 实例时,我使用 puttygen 将生成的 .pem 转换为 .ppk,然后尝试使用 PuTTY 连接到该实例,然后我会看到预期的提示以确认 SSH 指纹:
PuTTY 向我展示了 MD5 哈希的十六进制表示形式。这是 PuTTY 支持的唯一指纹格式。
除了PuTTY之外,目前首选的指纹格式是以 Base64 表示的 SHA256 哈希。
如果我查看新创建的实例的 EC2 系统日志,肯定会看到 SSH 指纹,以 Base64 表示的 SHA256:
看着这个答案,Amazon Linux 过去(也许现在仍然如此?)以十六进制而不是 Base64 输出哈希值。
如何验证 EC2 系统日志中显示的 Base64 SHA256 指纹是否与 PuTTY 连接的内容匹配?我宁愿避免安装特定于 EC2 的工具。
顺便说一句,当我使用 PowerShell 中的 OpenSSH 确认指纹时,我没有遇到任何问题。(我会考虑使用它而不是 PuTTY,但它似乎缺乏鼠标支持。)
此外,我还发现这个答案信息丰富,但没有给我答案。
(屏幕截图中显示的所有细节都反映了一个短暂的实例。我已经销毁了密钥对。)
答案1
在记下密钥类型(算法)和可选的指纹后,接受(至少暂时)主机密钥,但不要输入任何敏感信息,例如您的密码或猫视频。不要输入任何敏感信息。
ssh-keygen -l -f /etc/ssh/ssh_host_{type}_key.pub
这将显示密钥的“现代”(sha256/base64)指纹。检查它是否与 AWS 控制台中的值匹配。您可以添加-v
并检查“ASCII 艺术”绘图,据报道,研究表明它更容易比较,尽管我个人并不这么认为。但是我从来都不擅长那些曾经在报纸上出现的“这幅画有什么问题”的谜题,当时还有报纸。
也可以选择
ssh-keygen -l -E md5 -f {same}
确认“古老的”(md5 / hex)指纹与PuTTY显示的值相匹配,尽管对此应该没有什么疑问。
如果事实证明这是错误的主机,请断开连接并从注册表中删除错误接受的密钥HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
。