我可以设置 SSH known_hosts 以忽略特定的主机名吗?

Rob*_*ert 3 ssh known-hosts

我最近使用 Raspbian 系统映像设置了一些无头 Raspberry Pi 系统。他们默认使用 zeroconf 域名raspberrypi.local。在我更改它之前,我必须使用 SSH 连接到新服务器,它总是对我咆哮:

> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @      WARNING: POSSIBLE DNS SPOOFING DETECTED!           @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Run Code Online (Sandbox Code Playgroud)

并且在我打开 known_hosts 文件并删除上一个条目之前不会连接。然后当它连接时,它会自动添加一个新条目,raspberrypi.local以便下次搞砸。

我理解并欣赏检查密钥并自动添加新密钥的逻辑,但我认为对于这种特定情况,它没有意义。我永远不会连接到被调用的服务器,raspberrypi.local除非它是我刚刚插入的新服务器,在这种情况下,它永远不会有已知的可信赖密钥。

我可以从known_hosts 规范中看到我可以在地址端设置一个通配符(即接受这个范围内的任何地址的这个密钥)但是我想要做的是在密钥端设置一个通配符(接受来自这个的任何键)特定域名)。或者更好的是,根本不要检查这个域名的密钥。

有什么方法可以告诉 known_hosts 忽略(通过而不检查密钥)单个特定域名?

Ral*_*edl 5

在你的 中试试这个ssh_config,这可以防止 ssh 保存密钥,但仅限于此主机名。

Host raspberrypi.local
  UserKnownHostsFile /dev/null
Run Code Online (Sandbox Code Playgroud)

该手册还提到StrictHostKeyChecking

如果此标志设置为“no”或“off”,ssh 将自动将新的主机密钥添加到用户已知的主机文件中,并允许连接到已更改主机密钥的主机,但受到一些限制。

但是我没有找到有关这些限制的详细信息,无论如何您都不想保存主机密钥。