我最近使用 Raspbian 系统映像设置了一些无头 Raspberry Pi 系统。它们默认使用 zeroconf 域名raspberrypi.local
。在更改它之前,我必须使用 SSH 连接到新服务器,它总是向我咆哮:
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @ WARNING: POSSIBLE DNS SPOOFING DETECTED! @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
直到我打开 known_hosts 文件并删除前一个条目后,它才会连接。然后,当它连接时,它会自动添加一个新条目,以便raspberrypi.local
下次搞砸一切。
我理解并赞赏检查密钥并自动添加新密钥的逻辑,但我认为对于这种特定情况来说,这没有意义。raspberrypi.local
除非是我刚刚插入的新服务器,否则我永远不会连接到调用的服务器,在这种情况下它将绝不拥有已知的可信赖密钥。
我可以看到known_hosts 规范我可以在地址端(即接受来自此范围内任何地址的密钥),但我想要做的是在密钥端设置通配符(接受来自此特定域名的任何密钥)。或者更好的是,根本不检查来自此域名的密钥。
有什么办法可以告诉 known_hosts 忽略(不检查密钥就传递)单个特定域名?
答案1
在您的 中尝试这个ssh_config
,这会阻止 ssh 保存密钥,但仅限于这个主机名。
Host raspberrypi.local
UserKnownHostsFile /dev/null
该手册还提到StrictHostKeyChecking
:
如果此标志设置为“否”或“关闭”,ssh 将自动将新的主机密钥添加到用户已知的主机文件中,并允许继续连接具有更改的主机密钥的主机,但要受到一些限制。
但是我没有找到有关这些限制的详细信息,而且您无论如何都不想保存主机密钥。