本地BitBucket仓库git pull失败,SSH密钥类型不匹配求助
问题原因与解决方案
错误原因
本地Git版本更新后,默认禁用了安全性较弱的ssh-rsa主机密钥算法,但你的BitBucket服务器仍在使用该算法作为唯一的主机密钥类型,导致SSH握手时双方无法匹配密钥类型,从而触发连接失败。
你超过6个月未连接仓库的这段时间,本地Git大概率完成了版本升级(Git 8.8p1及后续版本默认不再将ssh-rsa纳入支持的主机密钥算法列表),而服务器端未调整密钥配置,因此之前正常的连接现在出现冲突。
快速解决方案
1. 单个仓库临时适配
进入报错的仓库目录,执行以下命令,让该仓库的Git操作允许使用ssh-rsa算法:
git config core.sshCommand "ssh -o HostKeyAlgorithms=+ssh-rsa"
2. 全局配置(所有仓库生效)
编辑Windows用户目录下的C:\Users\<你的用户名>\.ssh\config文件(若不存在则新建),添加以下内容:
Host 10.0.0.28 HostKeyAlgorithms +ssh-rsa
这样所有针对该BitBucket服务器的SSH连接都会自动兼容ssh-rsa算法。
3. 服务器端永久修复(若有权限)
登录BitBucket服务器,配置支持更安全的主机密钥类型(如ecdsa-sha2-nistp256、ssh-ed25519),并更新服务器的主机密钥。完成后本地无需做兼容配置,连接会更安全。
关于平台迁移
如果仅存在这个密钥算法问题,无需立刻更换到GitLab等平台,上述方法均可快速解决问题。若BitBucket服务器本身存在维护困难、功能不足等其他问题,再考虑迁移平台即可。
内容的提问来源于stack exchange,提问作者Musical Coder
相关产品推荐
相关产品推荐

