Security 如何在同一(但不断变化的)IP地址上处理两个不同主机的ssh主机密钥验证?
我在一个nat防火墙后面有两个ssh服务器,它的位置每天都在改变它的wan IP。在给定的时间内,它们始终位于同一wan IP地址,但位于不同的端口上 我通过以下方式连接到服务器A: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
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文件。为什么会关闭此文件而不是移动到或?