SSH:具有动态地址的已知主机


12

我需要使用动态IP地址连接到主机。

每次IP更改时,SSH都会提示我指纹验证:

The authenticity of host '...' can't be established.
RSA key fingerprint is ....
Are you sure you want to continue connecting (yes/no)?

是否可以通过SSH主机公钥,以便:

  1. SSH自动验证主机的真实性
  2. 主机密钥未存储在known_hosts文件中

这个问题与如何避免已知主机的SSH主机验证不同?因为其他的问题,旨在抑制SSH验证,虽然我并不想抑制它:我想有主机认证,只是用主机的公钥(这是我知道的,并将它存储在文件中),而不是SSH known_hosts文件。

对我来说,另一个问题似乎是每次都连接到不同的服务器,而不是连接到具有动态IP的单个知名服务器。

Answers:


8

我能找到的最佳解决方案(即最接近我想要的)是使用该选项HostKeyAlias:它将使用我指定访问的主机名known_hosts(而不是我要连接的IP)。

我将需要known_hosts使用给定的主机名(例如:)添加主机的公钥myhost,然后使用以下命令连接到该主机名:

ssh -o 'HostKeyAlias myhost' ...

我知道已经有一段时间了,但是:如果这能最好地回答您的问题,请接受。
kittykittybangbang 2015年

其他注意事项:您可以将HostKeyAliasconfig值添加到~/.ssh/config文件中,甚至可以添加到全局/etc/ssh/ssh_config文件中。
kael

6

known_hosts文件不仅是密钥,它还包含用于连接的主机名,以及可能的话对应的IP。这就是为什么您看到此错误的原因,它是将服务器获取的三元组与您存储在known_hosts文件中的三元组进行比较。

因此,如果IP不断变化,则可以禁用CheckHostIP它,这意味着它将仅检查主机名和主机密钥。如果这些保持不变,您应该减少抱怨,但是如果有人劫持您的DNS,您将面临风险。


1
感谢您的回答,我将尽快对其进行测试!无论如何,为什么要这样?如果我知道主机的SSH公钥,那么在任何情况下都应该足够完全安全(除非有人设法窃取了该主机的私钥),不是吗?
peoro

而且,如果我必须老实说,我还是不太喜欢它。使用该标志,SSH仍将访问known_hosts。为什么?我不能说“ ssh连接到公钥为Y的X”吗?为什么不?那不是100%肯定的。
peoro

这个想法是主机密钥是一个更大整体的一部分,仅凭这一点还不足以确保您要连接的服务器仍然是您先前连接的服务器。您需要确保IP和DNS条目也匹配。.请记住,这是基于网络的外壳程序,因此也需要检查网络。
NickW
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.