ssh远程主机标识已更改

Fil*_*lný 574 ssh verification man-in-the-middle ipa

我重新安装了我的服务器,我收到这些消息:

[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.
Run Code Online (Sandbox Code Playgroud)

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

到目前为止回答的所有答案只有在您没有安装Freeipa时才有效.

正确的答案,从adrin下面的评论freeipa 这里.

Kas*_*zar 1020

这是最简单的解决方案

ssh-keygen -R <host>
Run Code Online (Sandbox Code Playgroud)

例如,

ssh-keygen -R 192.168.3.10
Run Code Online (Sandbox Code Playgroud)

ssh-keygen手册页:

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

  • 请记住,如果您通过特定端口连接,则可能必须使用`ssh-keygen -R [127.0.0.1]:3022`等语法删除.只需检查.ssh/known_hosts文件中的内容即可. (25认同)
  • `&lt;host&gt;` 应与错误消息中的确切值一起使用,并用单引号引起来进行 shell 转义。例如:“... [example.com]:3422 的主机密钥已更改...”变为“ssh-keygen -R '[example.com]:3422”` (14认同)
  • 好的,在Windows上,我需要为此使用git bash的终端(或任何MingW32终端)。整rick (5认同)
  • 当我尝试这个时,我得到错误"<hostname>在〜/ .ssh/known_hosts中找不到" (3认同)
  • 为什么会出现此警告? (2认同)
  • 在地址周围添加引号也可能会有所帮助,例如: `ssh-keygen -R "[127.0.0.1]:3022"` (2认同)

rav*_*jan 188

使用

ssh-keygen -R [hostname]
Run Code Online (Sandbox Code Playgroud)

ip地址/主机名的示例如下:

ssh-keygen -R 168.9.9.2
Run Code Online (Sandbox Code Playgroud)

这将从known_hosts更新主机的违规行为

  • 没有解释的答案如何获得如此多的好评..没有安全问题,没有解释.... -1 (3认同)
  • 似乎也像下面其他答案的副本一样。请国防部清理这混乱... (3认同)
  • 主机名清晰示例:`ssh-keygen -R '[localhost]:2222'` (3认同)
  • 删除相应的密钥 ```$ ssh-keygen -R {server.name.com}``` | ```$ ssh-keygen -R {ssh.server.ip.address}``` | ```$ ssh-keygen -R server.example.com``` (2认同)

小智 109

重新创建数字海洋Ubuntu图像后,我发生了同样的错误.我使用以下命令代替我的服务器IP[IP_ADDRESS]

ssh-keygen -R [IP_ADDRESS]
Run Code Online (Sandbox Code Playgroud)


moc*_*ace 37

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

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

sed '4d' -i /var/lib/sss/pubconf/known_hosts
Run Code Online (Sandbox Code Playgroud)

4d是在帐户上Offending RSA ...known_hosts:4

  • 更便携的方法:`sed -i -e 4d/var/lib/sss/pubconf/known_hosts` (4认同)
  • 如果您希望重建服务器而不会造成此错误消息中断,您如何备份服务器的"身份识别"? (2认同)

And*_*den 32

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

rm ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)

我反对这一点,因为我们使用来自跳转框的短期服务器的小子网,并且经常使用共享相同ssh密钥的服务器的内部IP地址重用.

  • 腰带上有一个有用的工具,但这可能会让你遭受 MitM 攻击(这正是“known_hosts”旨在防止的事情)。仅当您确信其中的_所有_主机都是安全时才执行此操作。 (10认同)
  • 我有一种感觉删除所有known_hosts并不是一个好主意,只需要删除需要的指纹,而不是全部 (2认同)

ano*_*932 24

问题是您之前已接受与远程计算机的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.您将需要该日志输出中的servername和可能的端口.

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

  • 该标记为已接受答案。遵循这些步骤可以解决我的问题,而ssh-keygen -R [IP_ADDRESS]对我不起作用。谢谢! (2认同)

Ste*_*uan 15

许多人已经说过,使用ssh-keygen,即

ssh-keygen -R pong
Run Code Online (Sandbox Code Playgroud)

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

ssh -oStrictHostKeyChecking=no root@pong
Run Code Online (Sandbox Code Playgroud)

  • 我正在使用 **.ssh/config**:`Host ???? CheckHostIP no StrictHostKeyChecking no`(3 行,从第 2 行开始列出) (4认同)

Sah*_*ati 14

适合我!

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

这表示您在第no行有一个违规的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).


3nr*_*ue0 11

我使用了模拟接口的解决方案,虽然sed -i没有完全工作我通过手动删除vim来解决它:

sudo vim /var/lib/sss/pubconf/known_hosts
Run Code Online (Sandbox Code Playgroud)

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


Ale*_*lex 10

这是最简单的解决方案

使用 ssh-keygen 删除无效密钥

ssh-keygen -R "you server hostname or ip"
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助


小智 10

最终解决方案!

这是由于存储的ECDSA 密钥无效而显示的。因此,我们必须使用以下命令从主/控制器计算机中删除 ECDSA 密钥:

ssh-keygen -R 192.168.0.132
Run Code Online (Sandbox Code Playgroud)

这里192.168.0.132是远程系统IP。

  • 没有理由在这里有另一个重复的答案 (2认同)

Bru*_*uce 8

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

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

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


Nic*_*eau 8

对于Mac用户,可以使用命令的-R标志ssh-keygen。快速示例:

ssh-keygen -R THE_IP_ADDRESS
Run Code Online (Sandbox Code Playgroud)

THE_IP_ADDRESS是您要尝试使用的IP。然后您就可以连接好了。


小智 7

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

vim /root/.ssh/known_hosts

删除要连接的IP行.


Pra*_*shi 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
Run Code Online (Sandbox Code Playgroud)


Bor*_*off 7

我在 Windows 10 中使用 PowerShell 进行 ssh。
我的问题出在Windows目录中:C:\Users\youruser\.ssh
删除该目录中的文件known_hosts以忘记旧值。

您还可以使用文件资源管理器来查找和删除该文件。


Hel*_*ane 6

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

sed '/212.156.48.110/d' ~/.ssh/known_hosts > ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)

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

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

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


Kis*_*ore 6

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

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

Offending RSA key in /Users/isaacalves/.ssh/known_hosts:4
Run Code Online (Sandbox Code Playgroud)

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

ssh-keygen -R "you server hostname or ip"
Run Code Online (Sandbox Code Playgroud)


tje*_*spe 5

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


Cha*_*ara 5

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

ssh-keygen -R *ip_address_or_hostname*
Run Code Online (Sandbox Code Playgroud)

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

从手册页:

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


Bre*_*uin 5

有时,如果出于某种原因,您需要重新安装服务器,当通过 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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)


Muk*_*mar 5

使用这个命令:

truncate -s 0 /home/SYSTEM_NAME/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)

  • 为什么要截断文件?您会丢失所有信息,甚至是您已经验证过的信息。这是针对单个更改的公共主机密钥采取行动的糟糕方法。 (6认同)