794

我已经重新安装了我的服务器,并且收到了以下消息:

[user@hostname ~]$ ssh root@pong
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
6e:45:f9:a8:af:38:3d:a1:a5:c7:76:1d:02:f8:77:00.
Please contact your system administrator.
Add correct host key in /home/hostname /.ssh/known_hosts to get rid of this message.
Offending RSA key in /var/lib/sss/pubconf/known_hosts:4
RSA host key for pong has changed and you have requested strict checking.
Host key verification failed.

我尝试了在 Internet 上找到的各种解决方案。我的known_hosts文件(通常在 中~/.ssh/known_hosts)在/var/lib/sss/pubconf/known_hosts. 我试图编辑它,但它仍然处于一种状态。我已安装ipa-client并拥有 Fedora 19。如何解决此警告?

到目前为止,所有答案只有在您没有安装 Freeipa 的情况下才有效。

在下面的 adrin 评论中,freeipa 的正确答案在这里

4

30 回答 30

1304

这是最简单的解决方案

ssh-keygen -R <host>

例如,

ssh-keygen -R 192.168.3.10

ssh-keygen手册页

  • -R hostname从 known_hosts 文件中删除属于主机名的所有键。此选项对于删除散列主机很有用(请参阅上面的 -H 选项)。
于 2014-04-18T08:35:12.000 回答
232

利用

ssh-keygen -R [hostname]

带有 IP 地址/主机名的示例将是:

ssh-keygen -R 168.9.9.2

这将从 known_hosts 更新您的主机的违规行为。您还可以使用 -f 标志提供 known_hosts 的路径。

于 2014-04-24T09:35:54.947 回答
127

重新创建 Digital Ocean Ubuntu 映像后,我遇到了同样的错误。我使用以下命令和我的服务器 IP 代替[IP_ADDRESS]

ssh-keygen -R [IP_ADDRESS]
于 2014-02-15T08:49:43.643 回答
51

大锤是一举移除所有已知主机:

rm ~/.ssh/known_hosts

我遇到了这个问题,因为我们使用来自跳转盒的短寿命服务器的小子网,并且经常重复使用共享相同 ssh 密钥的服务器的内部 IP 地址。

于 2017-05-31T19:31:40.477 回答
45

当您重新安装服务器时,它的身份会发生变化,您将开始收到此消息。SSH 无法知道您是否更改了它所连接的服务器,或者是否已将中间服务器添加到您的网络以嗅探您的所有通信 - 因此它会引起您的注意。

只需删除相关条目即可从 known_hosts 中删除密钥:

sed '4d' -i /var/lib/sss/pubconf/known_hosts

4d是由于Offending RSA ...known_hosts:4

于 2013-12-30T12:59:57.793 回答
32

问题是您之前接受了与远程计算机的 SSH 连接,并且该远程计算机的数字指纹或 SHA256 哈希密钥在您上次连接后发生了变化。因此,当您再次尝试 SSH 或使用 github 拉取代码时,同样使用 SSH,您会收到错误消息。为什么?因为您使用与以前相同的远程计算机地址,但远程计算机使用不同的指纹进行响应。因此,可能有人在欺骗您之前连接的计算机。这是一个安全问题。

如果您 100% 确定远程计算机没有受到威胁、被黑客入侵、被欺骗等,那么您需要做的就是删除远程计算机的 known_hosts 文件中的条目。这将解决问题,因为连接时不会再出现与 SHA256 指纹 ID 不匹配的问题。

在 Mac 上,这就是我所做的:

1) 从该日志输出中找到“RSA host key for servername:port has changed and you have requested strict checking.您将需要服务器名称和可能的端口”的输出行。

2)备份SSH已知主机文件cp /Users/yourmacusername/.ssh/known_hosts /Users/yourmacusername/.ssh/known_hosts.bak

3)找到电脑旧指纹所在的行,删除。您可以使用步骤 #1 中的服务器名称和端口来搜索特定的违规远程计算机指纹。nano /Users/yourmacusername/.ssh/known_hosts

4) CTRL-X 退出并选择 Y 保存更改

现在键入ssh -p port servername,您将收到您第一次尝试 SSH 到该计算机时所做的原始提示。然后,您可以选择将该远程计算机的更新 SHA256 指纹保存到您的 known_hosts 文件中。如果您在端口 22 上使用 SSH,则不需要 -p 参数。

您可以恢复原始 known_hosts 文件的任何问题:cp /Users/yourmacusername/.ssh/known_hosts.bak /Users/yourmacusername/.ssh/known_hosts

于 2017-02-20T19:22:33.700 回答
27

这是最简单的解决方案

使用 ssh-keygen 删除无效密钥

ssh-keygen -R "you server hostname or ip"

希望对你有帮助

于 2021-03-18T02:06:12.313 回答
21

正如许多人已经说过的那样,使用ssh-keygen,即

ssh-keygen -R pong

此外,您可能需要考虑暂时关闭主机密钥检查:

ssh -oStrictHostKeyChecking=no root@pong
于 2017-03-30T04:45:34.820 回答
16

为我工作!

错误:违反 /var/lib/sss/pubconf/known_hosts 中的 RSA 密钥:4

这表明您在第 1 行有一个违规的 RSA 密钥。4

解决方案 1

1. vi /var/lib/sss/pubconf/known_hosts

2 remove line no: 4 ..

3. Save and Exit, and Retry .

解决方案2:

ssh-keygen -R "you server hostname or ip"

或者

解决方案3:

sed -i '4d' /root/.ssh/known_hosts

这将删除原地()4th行。/root/.ssh/known_hosts-i

于 2017-02-07T04:03:38.367 回答
11

我使用了 mockinterface 的解决方案,虽然 sed -i 不太好用我通过使用 vim 手动删除该行来解决它:

sudo vim /var/lib/sss/pubconf/known_hosts

您可以使用任何其他文本编辑器,但可能需要显示您的管理权限

于 2014-05-14T09:38:46.590 回答
9

编辑/home/hostname /.ssh/known_hosts,删除4行,保存。

然后ssh root@pong再次运行,你会看到这样的信息:Are you sure you want to continue connecting (yes/no)? yes,只需打印yes

注意:如果遇到问题,请先阅读提示,它会有所帮助。

于 2018-02-05T08:13:54.367 回答
8

这里的其他答案很好并且有效,无论如何,我通过删除解决了这个问题~/.ssh/known_hosts。这当然可以解决问题,但它可能不是最好的方法。

于 2017-01-15T23:03:04.610 回答
7

在我的情况下,它发生是因为我之前与具有相同 ip(比如 192.152.51.10)的机器建立了 ssh 连接,并且系统正在考虑前一个主机的 RSA 密钥(存储在 /home/user_name/.ssh/known_hosts 中)导致在不匹配。

解决此问题,您必须删除以前为 ip 192.152.51.10 存储的 RSA 密钥

ssh-keygen -f "/home/user_name/.ssh/known_hosts" -R 192.152.51.10
于 2017-08-27T16:04:39.163 回答
7

简单的单行解决方案,在 mac 上测试:

sed '/212.156.48.110/d' ~/.ssh/known_hosts > ~/.ssh/known_hosts

从已知主机中仅删除目标 ssh 主机 IP。

其中 212.156.48.110 替换为目标主机 IP 地址。

原因:由于端口转发,目标 IP 已为另一台机器所知,因此发生。在连接之前删除目标 IP 将解决此问题。

于 2020-01-06T07:25:21.843 回答
7

这是因为您的远程计算机设置已更改。为此删除您当前的密钥。

vim /root/.ssh/known_hosts

删除您正在连接的 IP 行。

于 2017-05-05T08:02:56.603 回答
6

更新了你的 ssh 密钥,收到上述消息是正常的。

正如消息指出的那样,只需编辑~/.ssh/known_hosts和删除第 4 行

Offending RSA key in /Users/isaacalves/.ssh/known_hosts:4

或使用 ssh-keygen 删除无效密钥

ssh-keygen -R "you server hostname or ip"
于 2020-07-31T16:42:50.110 回答
5

使用这个命令:

truncate -s 0 /home/SYSTEM_NAME/.ssh/known_hosts
于 2018-11-19T10:14:29.583 回答
4

如果您尝试使用该命令连接到端口 2222 上正在运行的 docker 容器,则会收到错误消息

mian@tdowrick2~$ ssh pos@localhost -p 2222

然后为了解决这个问题,在您的本地计算机(即主机而不是容器)上使用文本编辑器cd ~/.ssh/打开文件。known_hosts删除以开头的行[localhost]:2222并保存文件。现在再次尝试 ssh

mian@tdowrick2~$ ssh pos@localhost -p 2222

错误会消失,但每次容器重新启动时都必须这样做。

于 2019-01-03T13:55:15.330 回答
3

有时候,如果出于某种原因需要重新安装服务器,通过ssh连接时我们会发现您的服务器说标识已更改。如果我们知道这不是攻击,而是我们已经恢复了系统,我们可以使用 ssh-keygen 从 known_hosts 中删除旧标识:

ssh-keygen -R <host/ip:hostname>
root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

再次连接时,我们会要求您验证新指纹:

ssh -l user <host/ip:hostname>
The authenticity of host '<host/ip:hostname>' can't 
be established.
RSA key fingerprint is 3f:3d:a0:bb:59:24:35:6d:e5:a0:1a:3f:9c:86:81:90.
Are you sure you want to continue connecting (yes/no)? yes
于 2018-01-24T17:42:18.867 回答
3

使用以下命令从 known_hosts 中删除该条目:

ssh-keygen -R *ip_address_or_hostname*

这将从known_hosts文件中删除有问题的 IP 或主机名并尝试再次连接。

从手册页:

-R hostname
从 known_hosts 文件中删除属于主机名的所有键。此选项对于删除散列主机很有用(请参阅上面的 -H 选项)。

于 2018-01-08T15:25:02.957 回答
3

我的解决方案是:

  1. vi ~/.ssh/known_hosts
  2. 删除包含您想要连接的 ip 的行。

这比删除所有known_hosts

于 2017-09-26T03:24:27.200 回答
3

做就是了:

cd /home/user/.ssh/-> 这里user将是您的用户名,/home/jon/例如。

然后

gedit known_hosts &并删除里面的内容。

现在ssh再次,它应该工作。

于 2018-11-06T05:16:22.567 回答
3

我使用 Windows 10 PowerShell 进行 ssh 连接。我的问题是在 Windows C:\Users\youruser.ssh 中删除文件 known_hosts ,仅此而已。

于 2021-03-05T22:05:38.637 回答
2

我的机器上出现了同样的错误,我清除了known_hosts文件,之后它就可以正常工作了。

于 2017-02-27T00:53:58.483 回答
2

我遇到了这个问题,原因很简单,我ssh登录的IP地址重复,所以修改这个问题后,一切都解决了。

于 2016-06-27T03:50:17.870 回答
2

只有客户端问题(ip的重复密钥):

解决变体:

清除一个 ip(默认端口 22):

ssh-keygen -f -R 7.7.7.7

对于一个 ip(非默认端口):

ssh-keygen -f -R 7.7.7.7:333

快速清除所有ip:

cd ~; rm .ssh/known_hosts

7.7.7.7 - ssh 你的服务器 ip 连接

333 - 非标准端口

于 2017-04-22T13:22:34.573 回答
1

只需清除 /home/{username}/.ssh/known_hosts 中存在的 known_hosts

vi /home/{username}/.ssh/known_hosts 

删除已知主机中的每一行并退出,然后您将能够登录。

或者

运行这个命令

ssh-keygen -R "hostname/ip_address" 
于 2020-11-25T08:33:02.610 回答
0

我在 UBUNTU (linux) 上的解决方案:

1.您必须从“/home/YOUR_USERNAME/.ssh/known_hosts”中的“known_hosts”文件中删除内容

2.生成一个新的ssh密钥,如“ssh-keygen -t rsa -C”your.email@example.com“-b 4096”

3.将新的 ssh 密钥复制粘贴到您的 git 存储库(在我的情况下为 gitlab)SSH 密钥中。

这个对我有用 !

于 2018-09-05T14:56:45.890 回答
0

解决方案:

1- 从“$HOME/.ssh/known_hosts”中删除指向无法连接的主机的行。

2- 执行这个命令: ssh-keygen -R "IP_ADDRESSorHOSTNAME" (用你的目标 ip 或目标主机名替换 "IP_ADDRESSorHOSTNAME")

3-重试ssh连接(如果失败请检查.ssh目录的权限,它必须是700)

于 2017-01-30T13:07:41.857 回答
-1

AWS EC2。

在它给你的消息中找到 ip。

vim /home/ec2-user/.ssh/known_hosts

使用箭头键从消息中找到 ip 并单击。

dd

这将删除该行然后运行逃生

:wp

这将节省然后你很高兴去。

于 2019-12-20T13:08:54.107 回答