关于验证:ssh远程主机标识已更改

ssh remote host identification has changed

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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时才有效。

来自adrin的评论中的freeipa正确答案。


这是最简单的解决方案

1
ssh-keygen -R <host>

例如,

1
ssh-keygen -R 192.168.3.10

ssh-keygen手册页:

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


使用

1
ssh-keygen -R [hostname]

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

1
ssh-keygen -R 168.9.9.2

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


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

1
ssh-keygen -R [IP_ADDRESS]


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

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

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

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


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

1
rm ~/.ssh/known_hosts

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


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

1
ssh-keygen -R pong

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

1
ssh -oStrictHostKeyChecking=no root@pong


适合我!

Error: Offending RSA key in /var/lib/sss/pubconf/known_hosts: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

这将删除4th4th行(-i)。


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

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

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


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

vim /root/.ssh/known_hosts

删除要连接的IP行。


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

1
ssh-keygen -R THE_IP_ADDRESS

THE_IP_ADDRESS是你想要进入的IP。然后你可以连接好。


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


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

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

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

使用此命令:

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


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

1
ssh-keygen -R *ip_address_or_hostname*

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

从手册页:

-R hostname
Removes all keys belonging to hostname from a known_hosts file. This option is useful to delete hashed hosts (see the -H option
above).


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

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

Note: If you got some problem, read the hints first, it will help.


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

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

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

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

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


做就是了:

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

然后

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

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


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

解决变种:

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

1
ssh-keygen -f -R 7.7.7.7

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

1
ssh-keygen -f -R 7.7.7.7:333

快速清除所有ips:

1
cd ~; rm .ssh/known_hosts

7.7.7.7 - ssh你的服务器ip连接

333 - 非标准端口


我的解决方案是:

  • vi ~/.ssh/known_hosts
  • 删除包含您想要连接的ip的行。
  • 这比删除所有known_hosts更好


    我在我的机器上遇到了同样的错误,我清除了authorized_keysknown_hosts文件,之后,它运行正常。


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

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

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

    1
    2
    3
    4
    5
    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

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


    解:

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

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

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


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

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

    2.生成一个新的ssh密钥,如"ssh-keygen -t rsa -C"[email protected]"-b 4096"

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

    这个对我有用 !