it-swarm.cn

如何删除SSH中严格的RSA密钥检查,这是什么问题?

我有一台Linux服务器,无论何时连接,它都会显示更改SSH主机密钥的消息:

$ ssh root @ Host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @警告:远程主机标识已更改! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@ IT IS可能有人IS正在做某些NASTY!有人可能正在向您偷听(man-in -中间攻击)!RSA主机密钥也可能刚刚被更改。远程主机发送的RSA密钥的指纹为93:a2:1b:1c:5f:3e:68:47:bf :79:56:52:f0:ec:03:6b。请与系统管理员联系。在/home/emerson/.ssh/known_hosts中添加正确的主机密钥以摆脱此消息。在/ home/emerson /中有问题的密钥.ssh/known_hosts:377

Host1的RSA主机密钥已更改,您已请求严格检查。主机密钥验证失败。

它使我保持几秒钟的登录状态,然后关闭了连接。

Host1:〜/ .ssh#从远程主机host1读取:对等方重置连接与Host1的连接已关闭。

有谁知道发生了什么事以及我可以做些什么来解决这个问题?

45
setatakahashi

请不要像某些人所建议的那样删除整个known_hosts文件,这完全会使警告的内容无效。这是一项安全功能,用于警告您可能已发生中间攻击的人。

我建议您确定为什么会发生某些变化,最有可能是SSH升级由于可能的安全漏洞而更改了加密密钥。然后,您可以从known_hosts文件中清除该特定行:

sed -i 377d ~/.ssh/known_hosts

d删除了行377,如警告中冒号所示:

/home/emerson/.ssh/known_hosts:377

或者,您可以通过执行以下操作删除相关密钥

ssh-keygen -R 127.0.0.1 (obviously replace with the server's IP)

在清除特定密钥之前,请不要清除整个文件,并确保这实际上是您要连接的计算机。

71
Adam Gibbins

我认为,尽管此处的某些答案解决了OP的问题中建议采取的措施,但并不能完全回答问题。

问题指出:“如何在SSH中删除严格的RSA密钥检查,这又是什么问题?”

正如其他人所建议的,这里的问题是主机的更改,可能是由于服务器的重新安装(最常见的情况)。推荐的解决方案确实是使用内联sed从.ssh/authorized_keys文件中删除有问题的密钥。

但是,我没有看到任何答案可以解决问题的特定部分“ 如何在SSH中删除严格的RSA密钥检查“。

您可以在ssh配置文件中删除StrictHostKey检查,该文件通常存储在~/.ssh/config

下面提供了一个示例主机块:

Host 101
  HostName yourip|hostname
  User youruserid
  IdentityFile /path/to/keyfile
  Port 22
  StrictHostKeyChecking no

特别添加的行是最后一个StrictHostKeyChecking no可以做什么。根据您的特定方案,这可能对您有用,例如仅在几个ip上在专用服务器上运行多个虚拟化容器,在同一ip上停止并启动另一个实例。

27
Joel G Mathew

仅在单个服务器上需要删除StrictHostKeyChecking的另一种方法:

ssh <server> -o StrictHostKeyChecking=no
11
Greg Dougherty

首先,这是您的机器吗?您是否有意更改了主机密钥?如果没有,我会非常担心某些数据已更改。

其次,打开ssh调试程序,

ssh -vvv [email protected]

并查看提示信息,也可以尝试在试图连接的服务器上查找/ var/log/secure和/ var/log/messages以获取线索,sshd会提供良好的错误消息。

第三,这台机器是否已连接到互联网?您是否真的应该允许root登录?

5
Dave Cheney

正如“主机”(广泛定义的那样,它可能是从重新安装/多重引导到具有您之前已连接的IP地址的完全不同的计算机的所有内容),例如ssh客户端似乎已更改,它为您提供了错误。

不必关闭严格的检查,也不必批量删除已保存的密钥。

对于一个特定的主机名或IP地址,很有可能在known_hosts中列出了两个不同的密钥。根据您是否认为您可能需要当前存储在known_hosts中的“旧”密钥为您提供两种选择

在OP的known_hosts的l377处删除它所指的特定密钥,或者同时保留两者

避免删除已知主机中的密钥的最简单方法是

  1. 编辑known_hosts,以在已知_hosts [@ l377]中临时引用的“旧”条目的开头添加#
  2. 连接[ssh到主机],同意提示“自动”添加新密钥
  3. 然后重新编辑known_hosts以删除#

“在已知主机中添加正确的主机密钥” /每个主机名有多个ssh主机密钥?

3
Mark

之所以会收到此消息,是因为某些更改(例如新的NIC,新的IP,服务器软件的更改等)。安全焦点上有一篇不错的文章 SSH主机密钥保护

只需通过编辑$HOME/.ssh/known_hosts文件从服务器上删除密钥(使用SFTP或类似工具),并在下次连接时接受新密钥。

由于StrictHostKeyChecking设置,您的连接可能已断开。有关类似问题,请参见 此线程

3
user1797