在我的 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=
答案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 中的违规密钥