【发布时间】:2014-03-26 11:19:07
【问题描述】:
我有一个名为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,但我试图让事情变得简单。
有什么建议吗?
【问题讨论】: