2009-04-09 77 views
14

我有一台nat防火墙后面的2台ssh服务器,每天都在更改其WAN IP地址。它们在给定的时间总是处于相同的WAN IP地址,但在不同的端口上。如何处理同一(但不断变化的)IP地址上的两台不同主机的ssh主机密钥验证?

我连接到服务器A这样:

ssh -p 22001 [email protected] 

和服务器B:

ssh -p 22002 [email protected] 

所以我得到了相同的IP 2个不同的主机密钥,也是IP更改时即使是同一主机的不同IP。

我必须继续删除known_hosts文件中的其他密钥或旧密钥(在发生IP更改的情况下)。

我很犹豫是否将密钥验证关闭,因为这样做不太安全。但是始终发出警告也是不安全的(因为我一直忽略这些警告)。有更好的解决方案吗?

这是在这里与我的老问题,但不一样的:

SSH login warning message on a server with 2 DNS names

+0

为什么这个封闭的,而不是移到[超级用户](HTTPS ://superuser.com/)或[Unix&Linux](https://unix.stackexchange.com/)? – 2017-09-08 20:00:24

回答

32

我认为这将工作:

.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 

说明下面(来自man ssh_config

CheckHostIP

如果这个标志被设置为 “是”,SSH(1)将额外检查 主机IP地址中的known_hosts 文件。这允许ssh检测由于DNS欺骗而导致的主机密钥是否发生更改 。 如果该选项设置为“否”,则不会执行 检查。 默认值为“是”。

HostKeyAlias

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

UsernamePort线避免你不得不放弃在命令行上的选择,太多,所以你可以用:

% ssh server1 
% ssh server2 
+0

这太酷了!非常好,谢谢! – user89021 2009-04-09 19:39:30

相关问题