SSH到一个经常更改IP的框中

我有一些经常更换IP的云盒子。

ssh使用主机名,但每次服务器启动时,必须编辑known_hosts文件,因为这个错误消息:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is… 

除了任何安全风险以及与我想要做的事情相关的信息之外,有没有办法忽略这个错误,或者自动覆盖known_hosts文件,这样我就不需要自己编辑它了。

编辑你的ssh_config文件并添加改变这一行:

 CheckHostIP no 

CheckHostIP默认为“是”。 这样做只是做你失败的那种检查。 把它关掉意味着它只是相信IP是可变的,并且将对主机名进行密钥检查。

另外:你可以尝试只对这个名字禁用CheckHostIP检查:

 Host * [ global settings .. ] Host very.dynamic.host CheckHostIP no 

我使用这些狡猾的选项来解决这个问题。 (我的主机的公共密钥经常重新生成,所以这将删除IP和密钥检查)

 ssh remoteServerName -l username -o "UserKnownHostsFile=/dev/null" 

如果密钥保持不变,IP也会改变:

 ssh remoteServerName -l username -o "CheckHostIP=no" 

你可以在你的ssh 客户端configuration中设置StrictHostKeyChecking = no(即你连接的机器上的〜/ ssh / config文件),忽略这个警告。

您可以将CheckHostIP no放入您的~/.ssh/config文件中,但这会让您打开欺骗攻击。 如果你不担心这个,那么这个设置应该关掉known_hosts检查。

当连接到瞬态AWS机器时,我避免将指纹添加到我的known_hosts文件中。 我使用的命令如

 ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i secret.pem [email protected] 

连接到他们。 它不会问你是否要将机器添加到已知主机的列表中。用您的机器的IP地址replace10.0.0.5用Ssh密钥的完整pathreplacesecret.pem 。 你仍然会得到一个警告,已经添加了10.0.0.5 ,但它已经消失在/dev/null 。 我经常这样做,我在~/.profile设置了一个别名

 alias awsssh='ssh -i secret.pem -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' 

我保留ssh [email protected]types命令的机器是我去检查指纹的麻烦。

使known_hosts只读。