SSH远程主机标识已更改

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

[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 is6e: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:4RSA 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客户端并安装了Fedora 19。如何解决此警告?

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

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

853783 次浏览

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

只需通过删除相关条目从known_hosts中删除密钥:

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

4dOffending RSA ...known_hosts:4的帐户

我在重新创建Digital Ocean Ubuntu映像后也出现了同样的错误。我使用以下命令将服务器IP替换为[IP_ADDRESS]

ssh-keygen -R [IP_ADDRESS]

以下是最简单的解决方案:

ssh-keygen -R <host>

例如,

ssh-keygen -R 192.168.3.10

#0手册页

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

使用

ssh-keygen -R [hostname]

具有ip地址/主机名的示例是:

ssh-keygen -R 168.9.9.2

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

我使用了mockInterface的解决方案,尽管se-i不太起作用我通过使用vim手动删除该行来解决它:

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

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

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

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

解决方案:

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

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

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

为我工作!

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

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

解决方案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

这将删除/root/.ssh/known_hosts4th行(-i)。

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

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

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

ssh-keygen -R pong

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

ssh -oStrictHostKeyChecking=no root@pong

只有客户端问题(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-非标准端口

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

vim /root/.ssh/known_hosts

删除您正在连接的IP的行。

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

rm ~/.ssh/known_hosts

在蒙特雷

sudo rm /var/root/.ssh/known_hosts

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

在我的情况下,它发生了,因为我以前与具有相同IP的机器有ssh连接(说192.152.51.10)和系统正在考虑RSA密钥(存储在 /home/user_name/.ssh/known_hosts)的前一个主机,导致不匹配。

解决这个问题,你必须删除之前存储的IP192.152.51.10的RSA密钥

ssh-keygen -f "/home/user_name/.ssh/known_hosts" -R 192.152.51.10

我的解决方案是:

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

这比删除所有的known_hosts要好

删除该条目从known_hosts使用:

ssh-keygen -R *ip_address_or_hostname*

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

从手册页:

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

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

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

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

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

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

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

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

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

它为我工作!

只要做到:

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

然后

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

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

使用此命令:

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

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

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

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

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

错误将消失,但您必须在每次容器重新启动时执行此操作。

AWS EC2

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

运行

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

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

dd

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

:wp

这将节省然后你是好去。

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

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

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

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

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

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

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

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

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

运行此命令

ssh-keygen -R "hostname/ip_address"

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

您还可以使用文件资源管理器来定位和删除文件。

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

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

最终解决方案!

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

ssh-keygen -R 192.168.0.132

这里192.168.0.132是远程系统IP。