使用git执行git pull时报错no matching host key type found如何解决
问题原因
该报错触发的核心原因是本地高版本OpenSSH默认禁用了基于SHA-1哈希的ssh-rsa主机密钥算法,而你访问的Git服务器(172.16.42.42)仅支持ssh-rsa作为主机密钥验证算法,双方算法协商失败导致无法建立SSH连接,最终拉取代码失败。
解决方案
方案1:单次命令临时生效
仅对当前执行的git pull命令开放算法支持,不会修改本地任何配置:
git -c core.sshCommand="ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa" pull
方案2:针对目标主机永久生效(推荐)
仅为172.16.42.42这台服务器开放算法支持,不影响其他SSH连接的安全性:
- 打开本地用户SSH配置文件:
- Linux/macOS路径:
~/.ssh/config - Windows路径:
C:\Users\你的用户名\.ssh\config
若文件不存在可手动创建。
- Linux/macOS路径:
- 在文件中新增如下配置:
Host 172.16.42.42 HostKeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa
- 保存配置后重新执行
git pull即可正常拉取。
方案3:全局开放算法支持(不推荐,存在安全风险)
仅当你有大量使用ssh-rsa算法的旧服务器需要访问时使用:
- 打开全局SSH配置文件:
- Linux/macOS路径:
/etc/ssh/ssh_config(需管理员权限编辑) - Windows路径:
C:\ProgramData\ssh\ssh_config
- Linux/macOS路径:
- 在文件末尾添加配置:
Host * HostKeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa
- 保存后全局生效。
内容的提问来源于stack exchange,提问作者Jaroslav Bezděk
相关产品推荐
相关产品推荐

