为什么我在 known_hosts 文件中每台服务器有两个条目?

9 ssh openssh

在我的 Mac 上,我在~/.ssh/known_hosts文件中每台服务器有 1 个条目,在 Ubuntu 中,我注意到每台服务器创建了两个条目。这是为什么?

格式为:

|1|wwwwwwwwwwwwwww=|wwwwwwwwww= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
|1|vvvvvvvvvvvvvvv=|vvvvvvvvvv= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
Run Code Online (Sandbox Code Playgroud)

在这两个条目中,ecdsa-sha2-nistp256 之前的第一部分是不同的。在 ecdsa-sha2-nistp256 之后它是相同的(我想象的公钥)。

我 ssh 到服务器 A,然后从那里我 ssh 到服务器 B。我没有手动添加条目,我看到 ubuntu 警告并允许它添加到 known_hosts 文件。

我为这个测试清空了 known_hosts 文件。

我有理由怀疑额外的条目是针对 ipv6 地址的,即使我没有用它来连接。如果可用,ubuntu 是否会自动添加它?

小智 11

您有两个条目,因为一个是域,另一个是 IP 地址,因此您的示例:

|1|wwwwwwwwwwwwwww=|wwwwwwwwww= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
|1|vvvvvvvvvvvvvvv=|vvvvvvvvvv= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
Run Code Online (Sandbox Code Playgroud)

实际上可能读作:

[example.com] ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
[192.168.6.8] ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
Run Code Online (Sandbox Code Playgroud)

如果您禁用已知主机哈希(添加HashKnownHosts no到您的 ~/.ssh/config 文件),那么您可以看到发生了什么,但是在非哈希的 known_host 文件中,域和 IP 地址可以出现在同一行上,因此它们看起来像这样:

[example.com],[192.168.6.8] ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
Run Code Online (Sandbox Code Playgroud)

这里有更多关于 known_hosts 文件格式讨论。