我有一个Linux服务器,每当我连接它显示我改变SSH主机密钥的消息:
$ ssh root @ host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @警告:远程主机标识已更改! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT可能有人正在做一些事情! 现在有人可能会窃听你(中间人攻击)! 也可能是RSA主机密钥刚刚更改。 远程主机发送的RSA密钥的指纹为93:a2:1b:1c:5f:3e:68:47:bf:79:56:52:f0:ec:03:6b。 请联系您的系统pipe理员。 在/home/emerson/.ssh/known_hosts中添加正确的主机密钥以摆脱此消息。 /home/emerson/.ssh/known_hosts:377中的动作密钥
host1的RSA主机密钥已更改,并且请求严格检查。 主机密钥validation失败。
它使我保持几秒钟的login状态,然后closures连接。
host1:〜/ .ssh#从远程主机host1读取:连接重置由对等连接host1closures。
有谁知道发生了什么,我能做些什么来解决这个问题?
请不要按照某些人的build议删除整个known_hosts文件,这完全取消了警告的要点。 这是一个安全function,警告你一个中间人可能发生了一个人。
我build议你找出为什么它认为某些东西已经改变了,很可能是由于可能的安全漏洞,SSH升级改变了encryption密钥。 然后,您可以清除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)
请不要清除整个文件,并确保这实际上是您要连接的机器,然后清除特定的密钥。
我想虽然这里的一些答案是针对选举主任提出的build议的行动方式,但并没有完全回答这个问题。
问题是“如何在SSH中删除严格的RSA密钥检查,这里有什么问题?
正如其他人所build议的那样,这里的问题可能是由于重新安装服务器(最常见的情况)而导致主机发生变化。 而推荐的解决scheme确实是用inline sed从.ssh / authorized_keys文件中删除有问题的密钥。
但是,我没有看到任何答案的地址的问题的具体部分“”如何删除严格的RSA密钥检查SSH“。
回答这个问题的答案:你可以删除你的sshconfiguration文件中的StrictHostKey检查,通常存储在~/.ssh/config
。 下面提供了一个主机块示例:
Host 101 HostName yourip|hostname User youruserid IdentityFile /path/to/keyfile Port 22 StrictHostKeyChecking no
具体添加的行是最后一个StrictHostKeyChecking no
,只是做什么。 根据您的具体情况,这可能对您有用,例如在专用服务器上运行多个虚拟化容器,仅需几秒,停止并在同一个IP上启动另一个实例。
另一种方法来删除StrictHostKeyChecking,当你只需要做一个单一的服务器:
ssh <server> -o StrictHostKeyChecking=no
首先,这是你的机器吗? 你有意更改主机密钥吗? 如果不是,我会非常担心有什么东西改变了这些数据。
其次,调高sshdebugging,
ssh -vvv user@host
并查看告诉你什么,也可以尝试查看/ var / log / secure和/ var / log / messages在你尝试连接的服务器上寻找线索,sshd给出了很好的错误信息。
第三,这台机器是否连接到互联网? 你真的应该允许rootlogin吗?
你得到这个是因为有些东西已经改变了(比如新的网卡,新的IP,服务器软件的改变等)。 安全重点有一个关于SSH主机密钥保护的好文章。
只需从服务器上删除密钥(使用SFTP或类似的),编辑$HOME/.ssh/known_hosts
文件,并在下一次连接时接受新密钥。
由于StrictHostKeyChecking设置,您的连接可能会被丢弃。 看到这个线程有类似的问题。
作为“主机”[广义地说,它可以是从重新安装/多重启动到完全不同的计算机,例如之前连接的IP地址),ssh客户端看起来已经改变了,它给了你错误。
没有必要关掉严格的检查,也不需要批量删除已保存的密钥。
在known_hosts中为特定主机名或IP地址列出两个不同的密钥是很有可能的; 根据您是否认为您可能需要当前存储在known_hosts中的“旧”密钥给予您两种select
删除它所指向的特定键,在OP的known_hosts的l377处,或者同时保留两者
最简单的方法是避免在known_hosts中删除密钥
在“在known_hosts中添加正确的主机密钥”/每个主机名多个ssh主机密钥更多的答案?