使用隧道时设置.ssh / known-host文件

时间:2014-02-24 16:48:13

标签: linux unix ssh

我有一个名为tnl的脚本,我用来帮助\设置并通过ssh使用隧道。它会自动配置网关,然后确定我的程序应该使用哪些端口。在我的配置文件中,我可能有:

gateway: -system dmgwy01 -start 2000 -background
system:  -system foo01
system:  -system foo02
system:  -system foo03

当我运行命令时:

$ tnl start dmgwy01

这将使用以下端口开始我的隧道:

 ssh -N -c 3des dmgwy01 -L 2000/foo01/22 -L 2001/foo02/22 -L 2002/foo03/22

请注意,我不必为各个系统分配端口。这是由我的脚本自动完成的。

现在,我可以通过以下方式启动隧道:

$ tnl ssh foo01

效果很好。直到我更改配置文件并添加新系统:

gateway: -system dmgwy01 -start 2000 -background
system:  -system bar01
system:  -system foo01
system:  -system foo02
system:  -system foo03

现在,隧道开始如下:

 ssh -N -c 3des dmgwy01 -L 2000/bar01/22 -L 2001/foo01/22 -L 2002/foo02/22 -L 2003/foo03/22

请注意,各种系统的端口编号已更改。没关系,我真的不关心实际的端口号。但是,现在当我使用隧道时,我得到了:

$ tnl ssh bar01               
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx...
Please contact your system administrator.
Add correct host key in $HOME/.ssh/known_hosts to get rid of this message.
Offending RSA key in $HOME/.ssh/known_hosts:1
RSA host key for [localhost]:2000 has changed and you have requested strict checking.
Host key verification failed.

我已将此跟踪到我的~/.ssh/known_hosts文件。当我进行原始设置时,~/.ssh/known_hosts就是这样设置的:

[localhost]:2000 ssh-rsa (Fingerprint for f0001)
[localhost]:2001 ssh-rsa (Fingerprint for foo02)
[localhost]:2002 ssh-rsa (Fingerprint for f0003)

现在,[localhost]:2000bar01而非foo01,因此他们的指纹当然不同。尝试加入foo01foo02也会遇到同样的问题,因为他们的端口号已经更改,而且他们的指纹也不匹配。

有没有办法解决这个问题?是否可以强制我的.known_hosts使用系统名称而不是端口号?是否有可能以某种方式将 note 添加到我的.known_hosts文件中,该文件将主机映射到主机名,并允许我将主机名重新映射到之前的端口(如果可能)?

我可以通过关闭StrictHostKeyChecking解决这个问题,但这并不一定能解决问题。当我更改配置并重新计算主机密钥时,我可以简单地编辑known_hosts,但我正在努力保持简单。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

鉴于您的脚本tnl已经在本地端口号和要转发的主机名之间进行了排序。修改known_hosts文件不仅仅是一小步,以便相同的本地端口映射到同一主机 - known_hosts中的每一行都包含此信息。