git更新代码报错 Unable to negotiate with xx.xx.xx.x port 22: no matching host key type

474 阅读1分钟

问题描述

windows系统更新git到2.33.1版本后,更新代码报错:

Unable to negotiate with xx.xx.xx.xx port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

问题分析

通过报错可以知道,问题原因是没有找到相关的主机密钥类型,猜想到是git升级造成的。 打开git bash,运行ssh -V,可以看到git的OpenSSH版本为8.8p1,而本机ssh版本为8.1p1

image.png

查阅资料,发现openssh7.0版本后的 ssh 客户端默认禁用了 ssh-rsa 算法, 如果访问服务器只支持 ssh-rsa,那么就会报错。当你不能自己升级远程服务器的 openssh 版本或修改配置让它使用更安全的算法时, 可以在本地 ssh 针对这些旧的ssh server重新启用 ssh-rsa 。

问题解决

打开C:\Users\你的用户名\.ssh文件夹,编辑config文件(如果没有就新建)

加入下面代码

Host *
    HostKeyAlgorithms +ssh-rsa
    PubkeyAcceptedKeyTypes +ssh-rsa

或者只加在出问题的服务器

image.png

再次更新代码,成功!