使用 PuTTY 连接到新的 Amazon EC2 实例时,如何确认 SSH 指纹?

使用 PuTTY 连接到新的 Amazon EC2 实例时,如何确认 SSH 指纹?

当我使用新的 EC2 生成的密钥对创建运行 Ubuntu 18.04 的新 EC2 实例时,我使用 puttygen 将生成的 .pem 转换为 .ppk,然后尝试使用 PuTTY 连接到该实例,然后我会看到预期的提示以确认 SSH 指纹:

PuTTY 指纹检查提示

PuTTY 向我展示了 MD5 哈希的十六进制表示形式。这是 PuTTY 支持的唯一指纹格式。

除了PuTTY之外,目前首选的指纹格式是以 Base64 表示的 SHA256 哈希。

如果我查看新创建的实例的 EC2 系统日志,肯定会看到 SSH 指纹,以 Base64 表示的 SHA256:

EC2 系统登录新实例

看着这个答案,Amazon Linux 过去(也许现在仍然如此?)以十六进制而不是 Base64 输出哈希值。

如何验证 EC2 系统日志中显示的 Base64 SHA256 指纹是否与 PuTTY 连接的内容匹配?我宁愿避免安装特定于 EC2 的工具。

顺便说一句,当我使用 PowerShell 中的 OpenSSH 确认指纹时,我没有遇到任何问题。(我会考虑使用它而不是 PuTTY,但它似乎缺乏鼠标支持。)

PowerShell 中的 ssh 命令

此外,我还发现这个答案信息丰富,但没有给我答案。

(屏幕截图中显示的所有细节都反映了一个短暂的实例。我已经销毁了密钥对。)

答案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

相关内容