【问题标题】:ssh remote host identification has changedssh 远程主机标识已更改
【发布时间】:2014-01-17 08:47:49
【问题描述】:

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

[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 的 cmets 中 freeipa 的正确答案是 here

【问题讨论】:

  • 刚刚发现如果您有 ip 地址冲突也可能发生此问题 nslookup your ip to debug this issue more
  • 这里出现了死锁。这个被标记为重复,所以没有人可以添加答案,它链接的那个被标记为离题,所以也没有人可以在那里添加答案。如果您删除 known_hosts,它也会解决问题。
  • 我遇到了同样的问题。为了我和其他人的利益,这是我的问题和答案:superuser.com/questions/1071204/…
  • 作为希望首先验证其密钥的人,我发现此答案很有用。 askubuntu.com/a/83499/620623
  • 正如 sharrajesh 提到的:检查您的 DNS 条目(对我来说在 FreeIPA 中)并查看您没有多个 A 条目的 IP 无法从网络访问。

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


【解决方案1】:

这是最简单的解决方案

ssh-keygen -R <host>

例如,

ssh-keygen -R 192.168.3.10

来自ssh-keygen man page

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

【讨论】:

  • 好吧,在 Windows 上我需要使用来自 git bash 的终端(或任何 MingW32 终端)。棘手。
  • 请记住,如果您通过特定端口连接,您可能需要使用ssh-keygen -R [127.0.0.1]:3022 等语法删除。只需检查您的 .ssh/known_hosts 文件中明确说明的内容。
  • 当我尝试这个时,我得到错误“ not found in ~/.ssh/known_hosts”
  • 为什么会出现这个警告?
  • &lt;host&gt; 应与错误消息中的确切值一起使用,用单引号括起来以进行 shell 转义。例如:... host key for [example.com]:3422 has changed ... 变为 ssh-keygen -R '[example.com]:3422'
【解决方案2】:

使用

ssh-keygen -R [hostname]

IP 地址/主机名示例如下:

ssh-keygen -R 168.9.9.2

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

【讨论】:

  • 删除对应键$ ssh-keygen -R {server.name.com} | $ ssh-keygen -R {ssh.server.ip.address} | $ ssh-keygen -R server.example.com
  • 一个没有解释的答案怎么会得到这么多的赞成票..没有安全问题,没有解释....-1
  • 它似乎也只是下面另一个答案的副本。请一个mod清理这个烂摊子......
  • 主机名明确示例:ssh-keygen -R '[localhost]:2222'
  • @DanielW。 2014 年 4 月 18 日的答案原本内容较少,但后来被编辑。
【解决方案3】:

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

ssh-keygen -R [IP_ADDRESS]

【讨论】:

  • 非常感谢!我使用的是主机名,它只适用于 IP_ADDRESS :)
  • 这是为我做的,应该是公认的答案。我不知道为什么这个答案后来有两份副本,而且都有更多的赞成票。
  • 你的不是同一个错误;您的服务器没有运行 SSSD。请参阅 OP。
【解决方案4】:

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

rm ~/.ssh/known_hosts

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

【讨论】:

  • 当接受的答案不起作用时,在流浪虚拟机上为我工作。
  • 随身携带的有用工具,但这可能会使您面临中间人攻击(known_hosts 旨在防止的确切事情)。仅当您确信其中的所有主机都是安全的时才这样做。
【解决方案5】:

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

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

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

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

【讨论】:

  • 谢谢,但我不知道为什么,但我删除了它,它又在里面了。我试过停止sssd服务,这个效果消失了,但是启动sssd后,它又出现了。
  • 备份您的 ~/.ssh 目录,然后将其删除。在 ~/.ssh 被炸毁后,您的服务是否不断重新添加密钥?
  • 我已将 .ssh 重命名为 .ssh_old,新尝试连接后只需创建空目录 .ssh。而且我仍然无法使 /var/lib/sss/pubconf/known_hosts “可编辑”。
  • 更便携的方法:sed -i -e 4d /var/lib/sss/pubconf/known_hosts
  • 如何备份服务器的identification,以防您希望重建服务器而不会造成类似此错误消息的中断?
【解决方案6】:

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

【讨论】:

  • 这应该被标记为接受的答案。遵循这些步骤解决了我的问题,而 ssh-keygen -R [IP_ADDRESS] 对我不起作用。谢谢!
  • 是的,其中一个不公平的案例,肯定是最佳答案。第2和第3个答案只是重复第1个所说的,他们都有一个不完整的解决方案。
【解决方案7】:

这是最简单的解决方案

使用 ssh-keygen 删除无效密钥

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

希望对你有帮助

【讨论】:

  • 如果my server namelocalhost 并且下面的命令给出Host localhost not found in /home/user/.ssh/known_hosts 怎么办?好的,应该是ssh-keygen -R [localhost]:port
【解决方案8】:

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

ssh-keygen -R pong

另外,您可以考虑暂时关闭主机密钥检查:

ssh -oStrictHostKeyChecking=no root@pong

【讨论】:

  • 我在 .ssh/config 中使用的内容Host ???? CheckHostIP no StrictHostKeyChecking no(3 行,从第 2 行开始列出)
【解决方案9】:

为我工作!

错误: /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

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

【讨论】:

  • 这适用于 root 的 .ssh known_hosts 文件。不适用于 /var/lib/sss/pubconf/known_hosts,它是由 SSSD 托管的文件,由远程服务器填充。
  • 就我而言,由于某种原因,问题发生在 known_hosts*2* 上。遵循这些步骤帮助我找到了答案,感谢@Sahil Gulati!
【解决方案10】:

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

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

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

【讨论】:

  • 是的,在known_hosts文件中删除相同IP的记录即可解决问题。
  • 当再次尝试 ssh 时,SSSD 会立即重新创建该条目。请注意,sss pubconf known_hosts 是一个托管文件,而不是由本地服务器填充的某个本地存储库。
【解决方案11】:

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

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

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

【讨论】:

  • 实际解释发生了什么的最佳答案。
【解决方案12】:

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

【讨论】:

    【解决方案13】:

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

    vim /root/.ssh/known_hosts

    删除你正在连接的IP行。

    【讨论】:

      【解决方案14】:

      发生这种情况是因为我以前与具有相同 ip 的机器建立了 ssh 连接(比如 192.152.51.10)并且系统正在考虑 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
      

      【讨论】:

        【解决方案15】:

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

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

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

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

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

        【讨论】:

          【解决方案16】:

          更新了你的ssh key,收到上述信息是正常的。

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

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

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

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

          【讨论】:

            【解决方案17】:

            使用这个命令:

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

            【讨论】:

            • 请说明该命令的作用和不作用。
            • 为什么要截断文件?您会丢失所有信息,甚至是您已经验证过的信息。这是针对单个更改的公共主机密钥采取行动的糟糕方法。
            • 提示:这也会删除所有其他主机信息。如果您在机器上运行自动化脚本(如部署),它们可能会中断,因为您必须手动重新确认所有主机密钥。只是为了向这里渴望使用最简单解决方案的其他用户发出警告。
            【解决方案18】:

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

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

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

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

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

            【讨论】:

              【解决方案19】:

              我的解决办法是:

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

              这比删除所有known_hosts

              【讨论】:

              • 这个答案和下面的 miota85 一样。
              【解决方案20】:

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

              ssh-keygen -R *ip_address_or_hostname*
              

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

              来自手册页:

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

              【讨论】:

                【解决方案21】:

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

                【讨论】:

                • 这是最好的答案,因为它实际上告诉我发生了什么以及我为什么这样做
                【解决方案22】:

                只要做:

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

                然后

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

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

                【讨论】:

                  【解决方案23】:

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

                  【讨论】:

                    【解决方案24】:

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

                    【讨论】:

                      【解决方案25】:

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

                      【讨论】:

                        【解决方案26】:

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

                        【讨论】:

                        • known_hosts 文件有问题时,您不想删除authorized_keys
                        【解决方案27】:

                        解决方案:

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

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

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

                        【讨论】:

                          【解决方案28】:

                          我在 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 密钥中。

                          它对我有用!

                          【讨论】:

                            【解决方案29】:

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

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

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

                            运行这个命令

                            ssh-keygen -R "hostname/ip_address" 
                            

                            【讨论】:

                              【解决方案30】:

                              AWS EC2。

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

                              运行

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

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

                              dd
                              

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

                              :wp
                              

                              这将节省,然后你就可以走了。

                              【讨论】:

                                猜你喜欢
                                • 2015-05-26
                                • 2012-01-29
                                • 1970-01-01
                                • 2019-01-19
                                • 2018-02-10
                                • 1970-01-01
                                • 2017-03-18
                                • 2020-07-11
                                • 1970-01-01
                                相关资源
                                最近更新 更多