【问题标题】:Ubuntu-ssh - - WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED [closed]Ubuntu-ssh - - 警告:远程主机标识已更改 [关闭]
【发布时间】:2012-01-29 01:22:14
【问题描述】:

我无法通过 ssh 和 rysnc 连接到远程系统。它不断给出这个错误信息:

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
a3:8f:7c:07:c9:12:d8:aa:cd:c2:ba:b3:27:68:bc:c2.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending RSA key in /root/.ssh/known_hosts:8
RSA host key for xxx.xxx.xxx.xxx has changed and you have requested strict checking.
Host key verification failed.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(601) [sender=3.0.8]

我已经从/home/user/.ssh 中删除了authorized_keys 文件。

【问题讨论】:

  • 另外请检查rsync错误信息,ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection denied rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error : io.c(601) [sender=3.0.8] 出现无法解释的错误(代码 255)
  • 如果它不是生产系统,那么你可以执行 truncate -s 0 /root/.ssh/known_hosts

标签: ssh openssh


【解决方案1】:

您可以使用 sed 从您的 known_hosts 文件中删除第 8 行的违规密钥:

sed -i -e 8d /root/.ssh/known_hosts

【讨论】:

  • 是的,这是为我做的! :-) sed -i -e 36d known_hosts
【解决方案2】:

消息显示“/root/.ssh/known_hosts”未授权密钥。 从中删除该文件(或至少是相应的密钥),然后您就可以重新开始了!但请注意:密钥更改必须有原因。系统重装了吗?确保你检查一下,否则 ssh 的整个想法都是无效的。

顺便说一句:你以 root 身份 ssh 有什么原因吗?

【讨论】:

  • 删除对应键$ ssh-keygen -R {server.name.com} | $ ssh-keygen -R {ssh.server.ip.address} | $ ssh-keygen -R server.example.com
  • @Nikodemus 嘿,当我删除 ssh-keygen -f "/root/.ssh/known_hosts" -R instance_ip 时,它现在显示错误 Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 我应该如何处理?
【解决方案3】:

使用以下命令从 .ssh/known_hosts 文件中删除旧密钥

ssh-keygen -R <host>

【讨论】:

  • 如果谷歌把你送到这里,同时寻找你为什么突然无法访问你的流浪者盒子的答案,这个答案将最有帮助。当启动一个新的和不同的 vagrant box 时,该 box 可能会生成一个新的 rsa-key,它与之前为同一本地主机注册的 rsa-key 不同。如果是这种情况,您可以相信更改只是麻烦,您可以删除旧的无效密钥
  • 不仅仅是 Vagrant,如果你重新安装你的机器,密钥会改变。这似乎是最干净、最安全的解决方案。
  • 如果这不起作用,有什么想法可以尝试吗?!
  • 找不到命令错误?
  • @Talespin_Kit 在我的情况下只是没有删除它:ssh-keygen -R localhost -> /Users/user/.ssh/known_hosts updated. 但字符串没有删除
【解决方案4】:

这样做:

mv .ssh/known_hosts .ssh/known_hosts_old

【讨论】:

  • 迄今为止最好的答案!
  • 当问题只是一个主机时,没有理由删除整个文件。
  • 对于不熟悉 ssh 和主机密钥如何工作的人来说,这似乎是不明智的建议。您能否在答案中添加更多细节,说明这样做的影响?
  • 同意@Jian,这种方法会破坏以前工作的所有其他主机,并要求您重新信任远程服务器。如果您使用任何批处理脚本/自动化,那就不好了。
【解决方案5】:

消息确实解释了自己:

  • 远程主机用密钥标识自己
  • 您之前为该主机提供的密钥副本不同
  • 所以远程主机有可能不是他们所说的那个人

如果您信任远程主机,您可以从 /root/.ssh/known_hosts 中删除第 8 行,ssh 会在您下次尝试连接时询问您是否可以添加新密钥

如果您不信任远程主机,您必须联系主机管理员以了解他们是否以及为什么更改了 ssh 密钥。如果他们没有,则意味着您的流量被拦截了

另一方面,如果你真的信任远程主机(例如它在 Intranet 上),你可以使用

运行 ssh
-oBatchMode=yes -oStrictHostKeyChecking=no

【讨论】:

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