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

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

我需要连接到具有动态 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 验证,而我不是想压制它:我想要对主机进行身份验证,只使用主机的公钥(我知道,并将其存储在文件中)而不是 SSHknown_hosts文件。

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

答案1

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

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

ssh -o 'HostKeyAlias myhost' ...

答案2

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

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

相关内容