解决ubuntu22.04 git clone报错SSH主机密钥验证失败的问题
在使用Git通过SSH协议克隆远程仓库时,你可能会遇到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 a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ED25519 key in /home/user/.ssh/known_hosts:1
Host key for [example.com]:29418 has changed and you have requested strict checking.
Host key verification failed.
fatal: 无法读取远程仓库。
请确认您有正确的访问权限并且仓库存在。
解决方法
第一步
vim /etc/ssh/ssh_config
添加如下一行即可
HostKeyAlgorithms ssh-rsa
第二步
方法一:更新已知主机密钥
-
移除旧的密钥:
使用ssh-keygen
命令来移除旧的密钥条目。根据提示信息,执行以下命令(请将example.com
和端口号替换为实际值):ssh-keygen -f "/home/user/.ssh/known_hosts" -R "[example.com]:29418"
-
重新连接并添加新的密钥:
再次尝试克隆仓库,SSH客户端会提示你是否要继续连接(yes/no)。输入yes
后,新的主机密钥将会被添加到known_hosts
文件中。
方法二:手动更新known_hosts
文件
-
获取新密钥:
如果你知道新服务器的RSA或ED25519密钥指纹,可以直接通过命令行获取公钥(请将example.com
和端口号替换为实际值):ssh-keyscan -p 29418 -t rsa example.com >> ~/.ssh/known_hosts
或者对于ED25519类型的密钥:
ssh-keyscan -p 29418 -t ed25519 example.com >> ~/.ssh/known_hosts
-
检查和编辑
known_hosts
文件:
打开~/.ssh/known_hosts
文件,确保里面没有重复或冲突的条目,并且包含正确的密钥信息。