Git Bash 2.33.1版本SSH连接Gerrit出现协商失败问题
结论
该问题不是Git本身启用了限制,是Git for Windows 2.33.1版本内置的OpenSSH 8.8p1默认禁用了基于SHA-1的ssh-rsa、ssh-dss主机密钥签名算法导致的,旧版本Git for Windows 2.32.0内置的OpenSSH版本低于8.8,未禁用上述算法,所以可以正常连接。
临时验证方法
执行以下命令手动指定允许对应算法,验证是否可以正常连接:
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa -p 29418 user@gerrit.example.com
如果可以正常连接,说明是算法限制导致的问题。
永久配置方案
不建议全局放开算法限制,仅针对Gerrit站点做单独配置即可:
- 打开Git Bash,编辑当前用户的SSH配置文件:
vi ~/.ssh/config - 新增以下配置:
Host gerrit.example.com Port 29418 User 替换为你自己的Gerrit用户名 HostKeyAlgorithms +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa
- 保存配置后,后续直接执行
ssh gerrit.example.com即可正常连接。
补充建议
该方案为临时兼容方案,ssh-rsa、ssh-dss算法已被官方判定存在安全风险,建议联系Gerrit服务端管理员升级服务端SSH配置,改用更安全的ecdsa、ed25519类型主机密钥,从根源解决问题。
内容的提问来源于stack exchange,提问作者user4948798
相关产品推荐
相关产品推荐

