如何验证SSH指纹?

How to verify SSH fingerprint?

我怎么知道 GitHub 服务器 rsa2 密钥指纹 ssh-rsa 2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 与他们在 website 上显示的指纹匹配 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 (RSA) 因为它们看起来不一样?

我正在设置我的 GitHub 帐户以使用 SSH 提交代码。在第一次访问尝试和腻子想要缓存密钥时出现问题。从网络上的足够来源中,我发现足以确信它确实是 GitHub,但我如何亲自验证它?意识到欺骗风险等,但这不是问题。

第一次尝试 git clone [repository ssh url] 后,我从 putty 得到了 ssh-rsa 2048 指纹。

您看到此消息的原因是您使用的是旧的、过时的 SSH 客户端。

密钥的指纹只是密钥主体的散列。旧版本的 OpenSSH 为此使用 MD5,而您使用冒号的形式是 MD5 格式。然而,MD5 非常容易受到冲突的影响,以至于 CMU 表示它“不适合进一步使用”。责任方完全放弃了它,因为自 2004 年以来它就被认为是不安全的。尽管 SSH 使用它的目的并不知道它是不安全的,但已经没有任何充分的理由将 MD5 用于任何目的。

OpenSSH 前段时间为此切换到 SHA-256,同时,他们切换到使用 Base64 对哈希进行编码。同时,他们在名称前加上了哈希算法,因此它是明确的。 SHA-256 被广泛认为是安全的,并且 GitHub 不再显示 MD5 指纹,因为大多数客户端处理 SHA-256。

不幸的是,Putty 回到了 2000 年代初期,并没有摆脱 MD5。 GitHub 仍会在 https://api.github.com/meta 处发布其密钥的 MD5 哈希,因此您可以看到它,但大多数人不再发布 MD5 指纹。

如果您使用的是 Windows,则可以使用 Git 附带的 OpenSSH 版本用于 Windows;否则,OpenSSH 应该已经在大多数 Unix 系统上可用了。足够新的版本会正常显示 SHA-256 指纹。