问题描述
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
查阅资料,发现openssh7.0版本后的 ssh 客户端默认禁用了 ssh-rsa 算法, 如果访问服务器只支持 ssh-rsa,那么就会报错。当你不能自己升级远程服务器的 openssh 版本或修改配置让它使用更安全的算法时, 可以在本地 ssh 针对这些旧的ssh server重新启用 ssh-rsa 。
问题解决
打开C:\Users\你的用户名\.ssh文件夹,编辑config文件(如果没有就新建)
加入下面代码
Host *
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
或者只加在出问题的服务器
再次更新代码,成功!