Security 如何在同一(但不断变化的)IP地址上处理两个不同主机的ssh主机密钥验证?

Security 如何在同一(但不断变化的)IP地址上处理两个不同主机的ssh主机密钥验证?,security,ssh,verification,nat,openssh,Security,Ssh,Verification,Nat,Openssh,我在一个nat防火墙后面有两个ssh服务器,它的位置每天都在改变它的wan IP。在给定的时间内,它们始终位于同一wan IP地址,但位于不同的端口上 我通过以下方式连接到服务器A: ssh -p 22001 karl@x1.example.com 和服务器B: ssh -p 22002 karl@x2.example.com 因此,我为同一IP获得了两个不同的主机密钥,而且当IP发生变化时,甚至为同一主机提供了一个不同的IP 我必须不断地删除已知_hosts文件中的另一个密钥或旧密钥(在I

我在一个nat防火墙后面有两个ssh服务器,它的位置每天都在改变它的wan IP。在给定的时间内,它们始终位于同一wan IP地址,但位于不同的端口上

我通过以下方式连接到服务器A:

ssh -p 22001 karl@x1.example.com
和服务器B:

ssh -p 22002 karl@x2.example.com
因此,我为同一IP获得了两个不同的主机密钥,而且当IP发生变化时,甚至为同一主机提供了一个不同的IP

我必须不断地删除已知_hosts文件中的另一个密钥或旧密钥(在IP更改的情况下)

我在犹豫是否关闭密钥验证,因为这样会不太安全。但总是收到警告也是不安全的(因为我总是忽略这些警告)。有更好的解决办法吗

这与我的老问题有关,但不同:


我认为这会奏效:

.ssh
目录中创建一个
config
文件,如下所示:

Host server1
  Hostname x1.example.com
  HostKeyAlias server1
  CheckHostIP no
  Port 22001
  User karl

Host server2
  Hostname x2.example.com
  HostKeyAlias server2
  CheckHostIP no
  Port 22002
  User karl
下面的解释(来自
manssh\u config

检查主机IP

如果此标志设置为 “是”,ssh(1)将另外检查 已知_主机中的主机IP地址 文件这允许ssh检测 由于DNS欺骗,主机密钥已更改。 如果该选项设置为“否”,则 将不执行检查。这个 默认值为“是”

HostKeyAlias

指定应使用的别名,而不是实数 在主机密钥中查找或保存主机密钥时的主机名 数据库文件。此选项对于隧道SSH非常有用 用于在单个主机上运行的多个服务器的连接

用户名
端口
行也避免了您必须在命令行中提供这些选项,因此您只需使用:

% ssh server1
% ssh server2

这太酷了!非常好,谢谢!只是想知道:有没有办法让ssh将IP和端口存储在已知的_主机中?IIUC,这将允许一些针对DNS欺骗的保护,对吗?@Hbf在我的MacOS X系统上,端口(如果非标准)存储在
已知的\u主机中。不确定这是否是最近的发展,但OpenSSH至少在v5.9中将
主机:22001
主机:22002
识别为两个独立的主机;因此,没有警告“远程主机密钥已更改”。继续允许欺骗检测的一种方法是在服务器配置条目中为同一IP上的每个端口指定一个不同的UserKnownHosts文件。为什么会关闭此文件而不是移动到或?