我有一个名为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]:2000
为bar01
而非foo01
,因此他们的指纹当然不同。尝试加入foo01
或foo02
也会遇到同样的问题,因为他们的端口号已经更改,而且他们的指纹也不匹配。
有没有办法解决这个问题?是否可以强制我的.known_hosts
使用系统名称而不是端口号?是否有可能以某种方式将 note 添加到我的.known_hosts
文件中,该文件将主机映射到主机名,并允许我将主机名重新映射到之前的端口(如果可能)?
我可以通过关闭StrictHostKeyChecking
解决这个问题,但这并不一定能解决问题。当我更改配置并重新计算主机密钥时,我可以简单地编辑known_hosts
,但我正在努力保持简单。
有什么建议吗?
答案 0 :(得分:0)
鉴于您的脚本tnl
已经在本地端口号和要转发的主机名之间进行了排序。修改known_hosts
文件不仅仅是一小步,以便相同的本地端口映射到同一主机 - known_hosts
中的每一行都包含此信息。