use*_*021 17 security ssh verification openssh nat
我在nat防火墙后面有2个ssh服务器,每天都会改变它的wan IP.它们在给定时间内始终处于相同的WAN IP地址,但在不同的端口上.
我这样连接到服务器A:
ssh -p 22001 karl@x1.example.com
Run Code Online (Sandbox Code Playgroud)
和服务器B:
ssh -p 22002 karl@x2.example.com
Run Code Online (Sandbox Code Playgroud)
所以我为同一个IP获得了2个不同的主机密钥,并且当IP改变同一主机的不同IP时也是如此.
我必须在known_hosts文件中一遍又一遍地删除其他密钥或旧密钥(在IP更改的情况下).
我不愿意关闭密钥验证,因为这样会不那么安全.但是始终获得警告也是不安全的(因为我一直忽略这样的警告).有更好的解决方案吗?
这与我在这里的旧问题有关,但不一样:
Aln*_*tak 36
我认为这会奏效:
config在.ssh目录中创建一个文件,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
下面的解释(来自man ssh_config)
CheckHostIP
如果此标志设置为"yes",则ssh(1)将另外检查known_hosts文件中的主机IP地址.这允许ssh检测主机密钥是否因DNS欺骗而更改.如果该选项设置为"no",则不会执行检查.默认值为"是".
HostKeyAlias
在主机密钥数据库文件中查找或保存主机密钥时,指定应使用的别名而不是实际主机名.此选项对于隧道连接SSH连接或在单个主机上运行的多个服务器非常有用.
在Username与Port线避免你不得不放弃在命令行上这些选项,也因此你可以使用:
% ssh server1
% ssh server2
Run Code Online (Sandbox Code Playgroud)