如何修复 ~/.ssh/known_hosts 文件中的违规密钥
当您第一次对机器执行 ssh 时(或远程机器中的密钥更改时),系统会提示您说“是”以确认主机的真实性.
此功能使用 StrictHostKeyChecking ssh 参数控制。默认情况下,StrictHostKeyChecking 设置为 yes。
从安全角度来看,默认设置“StrictHostKeyChecking yes”是保护您的系统免受任何特洛伊木马攻击的最佳选择。如果您不知道自己在做什么,则不应将 StrictHostKeyChecking 设置为 no。
有时最好暂时禁用它。例如,当您第一次连接到许多已知主机时,您可能希望设置禁用此功能(即询问主机密钥是)并让 ssh 自动添加所有主机密钥。稍后您可以启用此功能。
当您为服务器配置了自动无密码登录并且远程主机密钥由于某种原因而不断变化(您知道它为什么会发生变化)时,您可能需要考虑将 StrictHostKeyChecking 设置为 no,直到远程主机密钥不断变化的问题是固定的。
从 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: 6
Permission 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 更改为适当的行号。
- 点赞
- 收藏
- 关注作者
评论(0)