第一次使用 ssh 连接服务器时,后台会发生什么

当我们第一次连接到服务器时,服务器会提示我们确认我们已连接到正确的系统。
以下示例使用 ssh 命令连接到名为 host03 的远程主机:

# ssh host03
The authenticity of host 'host03 (192.0.2.103)' can’t be
established. ECDSA key fingerprint is ...
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'host03,192.0.2.103' (ECDSA) to the list of known hosts.

主机验证是 OpenSSH 的主要功能之一。
该命令会检查以确保我们正在连接到我们认为要连接的主机。
当我们输入 yes 时,客户端会将服务器的公共主机密钥添加到用户的 ~/.ssh/known_hosts 文件中,并在必要时创建 ~/.ssh 目录。
下次连接到远程服务器时,客户端会将此密钥与服务器提供的密钥进行比较。
如果密钥匹配,则不会询问我们是否要继续连接。

on it road .com

如何修复“主机密钥验证失败”错误

方法 1 - 手动删除旧密钥

  1. 在源服务器上,旧密钥存储在文件 ~/.ssh/known_hosts 中。

  2. 仅当此事件是合法的,并且仅当确切知道 SSH 服务器为何提供不同的密钥时,然后编辑文件 known_hosts 并删除不再有效的密钥条目。
    客户端/源服务器中的每个用户在其主目录中都有自己的 known_hosts,只需删除目标服务器特定用户的文件中的条目即可。
    例如:
    如果 root 想要 ssh 到服务器,只需删除 /root/.ssh/known_hosts 文件中的条目就可以了。

如果 testuser 想要通过 ssh 连接到服务器,则删除文件 /home/testuser/.ssh/known_hosts 中的条目。

  1. 就我而言,我将从文件 /home/user01/.ssh/known_hosts 中删除目标服务器 192.168.219.149 的密钥(以红色突出显示)。
# vim /home/user01/.ssh/known_hosts
172.104.9.113 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLrY91bQOihgFZQ2Ay9KiBG0rg51/YxJAK7dvAIopRaWzFEEis3fQJiYZNLzLgQtlz6pIe2tj9m/Za33W6WirN8=
192.168.219.148 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCrY/m16MdFt/Ym51Cc7kxZW3R2pcHV1jlOclv6sXix1UhMuPdtoboj+b7+NLlTcjfrUccL+1bkg8EblYucymeU=
192.168.219.149 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCrY/m16MdFt/Ym51Cc7kxZW3R2pcHV1jlOclv6sXix1UhMuPdtoboj+b7+NLlTcjfrUccL+1bkg8EblYucymeU=

方法 2 - 使用 ssh-keygen 命令删除旧密钥

我们也可以使用 ssh-keygen 命令删除旧密钥。
使用该命令的语法如下。

$ ssh-keygen -R [hostname|IP address]

例如,在我们的例子中,我们将使用 IP 地址来删除旧密钥。

$ ssh-keygen -R 192.168.219.149
# Host 192.168.219.149 found: line 3
/home/user01/.ssh/known_hosts updated.
Oroirnal contents retained as /home/user01/.ssh/known_hosts.old

注意:如果我们不确切知道为什么 SSH 服务器提供不同的密钥,或者 known_hosts 文件不正确,或者必须有人调查此服务器和网络连接以了解意外更改的原因。

什么原因导致主机密钥验证失败错误

如果有人试图欺骗我们登录他们的机器以便他们可以嗅探 SSH 会话,我们将收到类似于以下内容的警告:

<<<<<<<<<<<<<<<<<<<@@
@    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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
dd:cf:50:31:7a:78:93:13:dd:99:67:c2:a2:19:22:13.
Please contact your system administrator.
Add correct host key in /home/user01/.ssh/known_hosts to get rid of this message.
Offending key in /home/lcz/.ssh/known_hosts:7
RSA host key for 192.168.219.149 has changed and you have requested strict checking.
Host key verification failed. 《-- 主机密钥验证失败

如果我们收到这样的警告,请停止并确定远程服务器的主机密钥是否有更改的原因(例如 SSH 是否已升级或者服务器本身是否已升级)。
如果没有充分理由更改主机密钥,请在解决问题之前不要尝试连接到该计算机。

如何修复错误“host key verification failed”

这个问题一般出现在服务器互换了IP。

检查确认

如果远程服务器要求确认将新密钥添加到 ~/.ssh/known_host 文件,则确认我们已成功删除旧密钥。
如果我们确认请求,源计算机会将新密钥添加到 ~/.ssh/known_host 文件中。

$ ssh root@192.168.219.149
The authenticity of host '192.168.219.149 (192.168.219.149)' can't be established.
ECDSA key fingerprint is SHA256:V+iGp3gwSlnpbtYv4Niq6tcMMSZivSnYWQIaJnUvHb4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.219.149' (ECDSA) to the list of known hosts.
日期:2020-09-17 00:13:39 来源:oir作者:oir