ssh远程主机标识已更改

时间:2013-12-30 12:54:49

标签: ssh verification ipa man-in-the-middle

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

[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.

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

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

以下评论中关于freeipa的正确答案来自adrin here

31 个答案:

答案 0 :(得分:927)

这是最简单的解决方案

ssh-keygen -R <host>

例如,

ssh-keygen -R 192.168.3.10

来自ssh-keygen man page

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

答案 1 :(得分:170)

使用

ssh-keygen -R hostname

使用ip地址/主机名的示例是:

ssh-keygen -R 168.9.9.2

这将从known_hosts

更新主机的违规行为

答案 2 :(得分:104)

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

ssh-keygen -R [IP_ADDRESS]

答案 3 :(得分:34)

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

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

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

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

答案 4 :(得分:29)

大锤将一举取消所有已知的主人:

rm ~/.ssh/known_hosts

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

答案 5 :(得分:22)

问题是您之前已接受与远程计算机的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

答案 6 :(得分:13)

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

ssh-keygen -R pong

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

ssh -oStrictHostKeyChecking=no root@pong

答案 7 :(得分:12)

适合我!

  

错误:在/ 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的{​​{1}}行(/root/.ssh/known_hosts)。

答案 8 :(得分:11)

我使用了模拟接口的解决方案,虽然sed -i不太起作用 我通过用vim手动删除该行来解决它:

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

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

答案 9 :(得分:7)

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

ssh-keygen -R THE_IP_ADDRESS

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

答案 10 :(得分:7)

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

vim /root/.ssh/known_hosts

删除您要连接的IP行。

答案 11 :(得分:5)

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

答案 12 :(得分:5)

更新了您的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"

答案 13 :(得分:5)

简单的一线解决方案,已在Mac上进行了测试:

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

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

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

原因:发生这种情况的原因是由于端口转发,另一台计算机已经知道了目标IP。在连接之前删除目标IP将解决此问题。

答案 14 :(得分:4)

这是最简单的解决方案

使用 ssh-keygen 删除无效密钥

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

希望对你有帮助

答案 15 :(得分:4)

在我的情况下,它发生是因为我以前与具有相同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

答案 16 :(得分:3)

使用:

从known_hosts中删除该条目
ssh-keygen -R *ip_address_or_hostname*

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

从手册页:

  

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

答案 17 :(得分:3)

使用此命令:

truncate -s 0 /home/SYSTEM_NAME/.ssh/known_hosts

答案 18 :(得分:3)

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

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

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

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

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

答案 19 :(得分:2)

修改/home/hostname /.ssh/known_hosts,然后删除4行,并保存。

然后再次运行ssh root@pong,您会看到如下消息:Are you sure you want to continue connecting (yes/no)? yes,只需打印yes

  

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

答案 20 :(得分:2)

只需:

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

然后

gedit known_hosts &并删除其中的内容。

再次ssh,它应该可以工作。

答案 21 :(得分:2)

仅客户端问题(ip的重复键):

解决变体:

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

ssh-keygen -f -R 7.7.7.7

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

ssh-keygen -f -R 7.7.7.7:333

快速清除所有ips:

cd ~; rm .ssh/known_hosts

7.7.7.7 - ssh您的服务器ip连接

333 - 非标准端口

答案 22 :(得分:1)

我的解决方案是:

  1. vi ~/.ssh/known_hosts
  2. 删除包含您想要连接的IP的行。
  3. 这比删除所有known_hosts

    更好

答案 23 :(得分:1)

有时,如果由于任何原因,您需要重新安装服务器,当通过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

答案 24 :(得分:1)

我的机器出现了同样的错误,我清除了authorized_keysknown_hosts文件,之后,它运行正常。

答案 25 :(得分:1)

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

答案 26 :(得分: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密钥中。

对我有用!

答案 27 :(得分:0)

解决方案:

1-从&#34; $ HOME / .ssh / known_hosts&#34;删除指向无法连接的主机的线路。

2-执行此命令:ssh-keygen -R&#34; IP_ADDRESSorHOSTNAME&#34; (替换&#34; IP_ADDRESSorHOSTNAME&#34;使用目标IP或目标主机名)

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

答案 28 :(得分:0)

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

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

删除已知主机中的每一行,然后退出即可登录。

OR

运行此命令

ssh-keygen -R "hostname/ip_address" 

答案 29 :(得分:0)

我使用 Windows 10 PowerShell 在 ssh 中进行连接。 我的问题是在 Windows C:\Users\youruser.ssh 中 删除文件 known_hosts 就可以了。

答案 30 :(得分:-1)

AWS EC2。

在给您的消息中找到IP。

运行

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

使用箭头键从消息中找到IP,然后单击。

dd

这将删除该行,然后运行转义

:wp

这样可以节省,然后您就可以开始了。