解决 GitHub SSH 主机密钥变化问题
在使用 Git 时,尤其是与 GitHub 进行 SSH 连接时,可能会遇到一个常见的错误消息,提示“远程主机标识已更改”。这种情况通常发生在 GitHub 的主机密钥发生变化时,系统无法验证新的密钥是否合法,从而阻止了与 GitHub 的连接。
错误消息示例
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 ED25519 key sent by the remote host is
SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
Please contact your system administrator.
Add correct host key in /c/Users/21725/.ssh/known_hosts to get rid of this message.
Offending ED25519 key in /c/Users/21725/.ssh/known_hosts:1
Host key for github.com has changed and you have requested strict checking.
Host key verification failed.
fatal: Could not read from remote repository.
这个错误的意思是 GitHub 的 SSH 主机密钥发生了变化,导致验证失败。通常情况下,这种情况发生是因为 GitHub 更新了其 SSH 密钥,或者是你的 known_hosts
文件中存储的密钥信息已经过时。
解决方案
1. 删除旧的 GitHub 主机密钥
首先,解决这个问题的方法是从 known_hosts
文件中删除过时的 GitHub 主机密钥。你可以手动打开该文件并删除第一行,或者使用以下命令来自动删除:
ssh-keygen -R github.com
该命令会从 ~/.ssh/known_hosts
文件中删除 GitHub 的主机密钥。
2. 重新连接 GitHub
删除旧的密钥后,接下来你需要重新连接到 GitHub,系统会提示你确认新的主机密钥。运行以下命令来测试 SSH 连接:
ssh -T git@github.com
你将看到如下提示:
The authenticity of host 'github.com (140.82.113.4)' can't be established.
ED25519 key fingerprint is SHA256:+DiYXXXXXX
Are you sure you want to continue connecting (yes/no)?
3. 确认新的密钥
系统会提示你确认 GitHub 的新主机密钥。输入 yes
以继续连接,并将新的主机密钥添加到 known_hosts
文件中。
Warning: Permanently added the ED25519 host key for IP address '140.82.113.4' to the list of known hosts.
结论
按照以上步骤,你应该能够成功解决“远程主机标识已更改”问题。此问题的根本原因是 GitHub 更新了其主机密钥,而你的 SSH 客户端保存了过时的密钥信息。删除过时的密钥并确认新的密钥是解决此问题的正确方法。
如果你在执行这些步骤时遇到任何问题,欢迎在评论区留言,我会尽快为你提供帮助。