当你第一次对一台机器执行SSH操作时(或者在远程机器发生重大变化时),系统会提示你输入“yes”表示主机的真实性。
此功能是使用StrictHostKeyChecking ssh参数进行控制的。默认情况下,StrictHostKeyChecking设置为yes。
从安全的角度来看,“StrictHostKeyChecking yes”的默认设置是保护系统免受特洛伊木马攻击的最佳选择。如果您不知道自己在做什么,则不应将StrictHostKeyChecking设置为否。
有时暂时禁用它可能会很好。例如,当你第一次连接到很多已知的主机时,你可能想要设置禁用这个功能(即对主机密钥询问是)并让ssh自动添加所有的主机密钥。稍后,您可以启用此功能。
当你配置了服务器的自动无密码登录,并且如果远程主机密钥因为某种原因(你知道它为什么会改变)而不停地改变,你可能要考虑设置StrictHostKeyChecking为否,直到远程主机密钥持续改变的问题是固定。
在ssh命令行中,您可以传递StrictHostKeyChecking选项,如下所示。你也可以在你的ssh_config文件中设置这个选项
#ssh -o'StrictHostKeyChecking no'user @ host
如果您是第一次登录到服务器,它会永久地将RSA添加到已知主机的列表中,而不会提示您。
但是,如果发生重大更改(通常重新安装操作系统(或sshd),则远程主机密钥将更改),则必须删除旧的无效密钥,如下所示。
删除有问题的SSH密钥
当远程主机密钥更改时(以前使用有效的远程主机密钥连接之后),将显示以下错误。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 a7:a8:f2:97:94:33:58:b7:9d:bc:e0:a6:6b:f7:0a:29. Please contact your system administrator. Add correct host key in /home/ramesh/.ssh/known_hosts to get rid of this message.Offending key in /home/ramesh/.ssh/known_hosts: 6Permission denied (publickey,password).
您必须删除密钥才能继续。使用以下命令删除违规密钥。
#sed -i'6d'〜/ .ssh / known_hosts
注:根据显示的行号更改6d。
如果您的sed没有-i选项,请使用perl或使用某个编辑器删除违规密钥。
Perl解决方案:
#perl -pi -e's / Q $ _ // if($。== 6);' 的〜/ .ssh / known_hosts
注意:将行号从6更改为适当的行号。
最新评论