我有一些经常更换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只读。