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

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

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

格式为:

|1|wwwwwwwwwwwwwww=|wwwwwwwwww= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
|1|vvvvvvvvvvvvvvv=|vvvvvvvvvv= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=

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

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

为了进行这次测试,我清空了 known_hosts 文件。

我怀疑额外的条目是用于 ipv6 地址的,尽管我还没有使用它进行连接。如果可用,ubuntu 会自动添加它吗?

答案1

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

|1|wwwwwwwwwwwwwww=|wwwwwwwwww= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
|1|vvvvvvvvvvvvvvv=|vvvvvvvvvv= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=

可能实际上是:

[example.com] ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
[192.168.6.8] ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=

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

[example.com],[192.168.6.8] ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=

还有一点此处讨论known_hosts文件格式。

答案2

您应该为所连接的每台服务器都准备一个密钥。要么您在不同时间连接了两台服务器,要么您的单台服务器上的密钥已更改。

当您第一次连接到 ssh 服务器时,系统会询问您是否希望将密钥添加到已知主机。

看起来像这样:

在此处输入图片描述

因此,您在某个时间点与您的客户接受了钥匙。

在每次后续连接中,当您连接到服务器时,都会对密钥进行比较,如果密钥发生变化,您会收到警告。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 警告:远程主机标识已更改! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 可能有人正在做一些恶意的事情!有人可能现在正在窃听你(中间人攻击)! RSA 主机密钥也可能刚刚被更改。远程主机发送的 RSA 密钥的指纹为 f2:92:1d:da:81:2a:d7:16:0a:48:f0:43:20:1c:f4:b5。请联系您的系统管理员。在 /home/bodhi/.ssh/known_hosts 中添加正确的主机密钥以消除此消息。 /home/bodhi/.ssh/known_hosts:1 中的违规密钥

看:http://bodhizazen.com/Tutorials/SSH_overview#Security

相关内容