为什么 ssh 并不总是要求我验证服​​务器的密钥指纹?

为什么 ssh 并不总是要求我验证服​​务器的密钥指纹?

有时,当我通过 SSH 连接到不在我的已知主机文件中的服务器时,ssh 会向我显示以下消息:

无法确认主机“[domain] ([ip_address])”的真实性。RSA
密钥指纹为 [fingerprint]。
您确定要继续连接吗(是/否)?

如果我选择“是”,那么我会收到以下消息:

警告:将“[域]”(RSA)永久添加到已知主机列表中。

但对于其他一些服务器(例如 github.com),系统不会提示我继续,而是立即地收到以下消息,其表述略有不同:

警告:将 IP 地址“[ip_address]”的 RSA 主机密钥永久添加到已知主机列表中。

是什么导致了这种行为差异?更重要的是,当我不是提示,在继续使用服务器之前,我是否需要手动检查已添加到known_hosts文件中的密钥?

在这两种情况下,我都通过公钥进行身份验证。我运行的是 OS X 10.10.3,使用系统安装的 OpenSSH。

答案1

这可能是因为这些站点将其 ssh 指纹存储在 DNS 中,因此不再麻烦用户验证密钥。

该功能称为 SSHFP 记录。您可以使用以下方法验证这一点ssh-keygen -r github.com

答案2

事实证明我只是一个白痴。

同时,正如 Jakuje 所说SSHFP 允许网站将其公钥指纹存储在其 DNS 记录中,在这种情况下,密钥曾是已经在已知主机文件中,在域名下,(我是通过-v在命令中添加调试标志发现的ssh)。

正如我收到的信息消息所解释的那样,文件中添加了一个新行正在使用的 IP 地址

相关内容