25

我已经能够通过ssh正确连接到服务器。但是最近更改了服务器的固定IP地址和域名后,我无法通过DNS名称连接到服务器。尽管如此,我可以ssh使用其 IP 地址访问服务器。with domain name的错误ssh如下:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The DSA host key for example.com has changed,
and the key for the corresponding IP address X.X.X.X
has a different value. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
Offending key for IP in /home/.ssh/known_hosts:10
  remove with: ssh-keygen -f "/home/.ssh/known_hosts" -R X.X.X.X
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 DSA key sent by the remote host is
*:*:*:*:*:....
Please contact your system administrator.
Add correct host key in /home/.ssh/known_hosts to get rid of this message.
Offending DSA key in /home/.ssh/known_hosts:11
  remove with: ssh-keygen -f "/home/.ssh/known_hosts" -R example.com
DSA host key for example.com has changed and you have requested strict checking.
Host key verification failed.
4

9 回答 9

38

答案在问题中:

ssh-keygen -f "/home/.ssh/known_hosts" -R example.com

您将获得有关第一个谷歌热门信息的更多信息。WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

于 2013-11-04T12:36:12.617 回答
5

您应该从 known_hosts 中删除第 10 行,因为系统向您发出了有关 /home/.ssh/known_hosts:10 中 IP 的违规密钥问题的信号

于 2019-02-06T13:10:23.567 回答
3

我移动了我的~/.ssh/known_hosts文件并重试了它。我猜效果只是确认提示未来的连接,对于那里的主机known_hosts

于 2017-10-12T15:08:34.987 回答
1

如果您有/etc/ssh目录的备份并想要恢复它,只需使用

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@hostname

无需检查即可连接一次。

来源:ssh 手册页

于 2015-05-29T18:12:44.997 回答
1

我遇到了同样的问题。

我认为问题在于“已知主机”中记录的项目与远程主机的某些内容不匹配(对不起,我不知道该内容是什么)。

就我而言,我只是根据远程主机的 IP 地址删除了“known-hosts”中的项目,然后再次运行 ssh 命令。然后它起作用了。

于 2017-10-21T15:05:49.693 回答
0

只需按照建议进行即可。

sudo ssh-keygen -f "/root/.ssh/known_hosts" -R ip

sudo ssh-keygen -f "/root/.ssh/known_hosts" -R host

这些命令将删除旧指纹,然后会询问您:

无法确定主机“主机(IP)”的真实性。ECDSA 密钥指纹为 SHA256:YrD+1E4JmdeObwEyQW3zGqNhXE//64MMZrHHaInE7w0。您确定要继续连接(是/否)?

写“是”,你会看到这样的信息:

警告:将“host,ip”(ECDSA) 永久添加到已知主机列表中。

/root/.ssh/known_hosts这将在文件中创建新的指纹。

于 2017-09-12T17:04:47.057 回答
0

对我来说,它找不到文件,所以我不得不像这样翻转文件路径和域名:

ssh-keygen -R example.com -f ~/.ssh/known_hosts
于 2019-03-25T16:47:10.600 回答
0

当我尝试拉动时,我遇到了同样的问题。

修复:我删除了系统上的 .ssh/known_hosts 文件并重试了 pull,它成功了。

为什么会这样:我们进行了 gitlab 迁移。known_host 文件存储 gitlab ip,因此无法与现有主机建立连接。

于 2020-11-16T15:25:56.113 回答
-1

只需删除 known_hosts 文件

$ rm .ssh/known_hosts
$ ssh ras.mydomain.com

再次尝试使用 ssh 连接

ssh username@server-ip-here
于 2021-03-22T17:22:04.343 回答