错误类型:<br>其他错误<br>错误名称:<br>警告:远程主机标识已更改<br>英文名称:<br>Warning: Remote host identification has changed<br>错误描述:<br>如果客户端认为这些指纹与它理解的正确指纹不同,你就会收到 "Warning: Remote host identification has changed" 错误。
“Warning: Remote Host Identification Has Changed” 是一个 SSH 客户端提示,表示连接到的远程主机的身份信息(通常是主机的公钥)与之前存储的身份信息不匹配。这可能表明远程主机的身份已经改变,或者存在中间人攻击的风险。
处理这个警告需要谨慎,因为错误操作可能会导致安全风险。在确认原因后,可以采取以下步骤:
~/.ssh/known_hosts
文件。ssh-keygen -R hostname
例如,如果你连接的主机名是 example.com
,则运行:sh复制代码ssh-keygen -R example.com
~/.ssh/known_hosts
文件中。ssh user@example.com
你会看到一个提示,询问是否信任新的主机密钥:sh复制代码The authenticity of host 'example.com (192.168.1.1)' can't be established. ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Are you sure you want to continue connecting (yes/no)?
输入 yes
并继续。known_hosts
文件,以防止误删除。您可以修复?Windows 和 macOS?都会出现 “Warning: Remote host identification has changed” 错误。不过,在 Mac 上这样做的灵活性更大。
从 Windows 开始,我们将介绍许多可以恢复正常的方法。
注:除非你完全确信问题不是恶意的,否则不要尝试修复错误。如果你确定你的连接不存在安全隐患,下面的步骤就是为你准备的。
需要注意的是,Windows 机器可能没有?known_hosts?文件。但如果使用?OpenSSH 客户端,则会有一个文件。要找到它,请打开 Windows 搜索栏,使用?%USERPROFILE%?命令导航到用户文件夹。
这将在文件资源管理器中打开该目录。其中还会有一个 .ssh 文件夹:
Windows 文件资源管理器
该文件夹中的文件是?known_hosts。你可以用记事本(或你喜欢的文本编辑器)打开它。文件中会有一个键值列表:
Windows 的 known_hosts 文件
在这里,你可以删除导致问题的密钥,然后重新保存文件。
有些用户可能更喜欢?PuTTY 客户端。这些键值位于注册表中,但其作用与 OpenSSH 相同。
你需要打开 Windows 注册表编辑器(又称 “regedit”)。你可以用自己喜欢的方式打开,但最快捷的方法是在 Window 的搜索栏中输入应用程序的名称:
Windows 开始菜单中的注册表编辑器链接
在此,在 regedit 中查找以下目标:
HKEY_CURRENT_USER/Software/SimonTatham/PuTTY/SshHostKeys/
您将在此看到与计算机上保存的连接相关的条目列表。您的任务就是删除造成问题的连接:
在 regedit 中删除注册表键值
点击 “Delete” 按钮后,还需要确认是否要删除该键:
确认值删除对话框
单击 “Yes” 意味着密钥将永远消失,你应该不会再收到 “Warning: Remote host identification has changed” 错误。
Mac 有几种修复 “警告:远程主机标识已更改 “错误的方法: 远程主机标识已更改 “错误–可以通过高级应用程序(如?SSH Config Editor)或终端。结果都是一样的,所以我们建议你选择更舒适(预算更充足)的方式。
我们的首选方法是在终端窗口(或?iTerm2,如果你使用该应用程序)中访问文件,并用专用的?Nano?或?Vim?编辑器打开它。这是因为,无论你的经验水平如何,每个人都可以访问并直接使用它。
在这里,我们将使用 Nano。首先,使用最舒服的程序打开终端:
从 Spotlight 打开终端
在窗口中运行 nano ~/.ssh/known_hosts
命令。这将打开一个新的 Nano 实例,并显示 known_hosts 文件中的密钥:
使用 Nano 编辑器 known_hosts 文件
删除导致 “Warning: Remote host identification has changed” 错误的密钥,然后保存更改。
你可能还想删除整个 known_hosts 文件,尤其是当你只在一两个网站上使用 SSH 时。为此,你可以在终端窗口中运行 rm .ssh/known_hosts
。
在 Mac 上还有一种修改 known_hosts 文件的方法:在命令行中使用 ssh-keygen 工具。如果你不想深入研究文件本身,或者只想使用一个网站或密钥,那么这种方法就很不错。
为此,请打开终端窗口并运行 ssh-keygen
,然后输入服务器主机名。例如
ssh-keygen -R server.example.com
这不会问你是否要删除指定的行,所以在继续之前要确保你删除的是正确的行:
使用 ssh-keygen 从已知主机文件中删除
完成后,就不会再出现 “Warning: Remote host identification has changed” 错误。