Windows设备SSH克隆Azure DevOps仓库报ssh-rsa及SSL证书相关错误
问题根因
两个报错均为新Windows设备自带软件版本的默认安全策略与Azure DevOps服务端兼容问题导致,和密钥生成、公钥配置、仓库权限无关:
- SSH协商报错:新Windows预装的OpenSSH 8.8+版本默认禁用了
ssh-rsa主机密钥算法,而Azure DevOps的SSH服务当前仍默认提供ssh-rsa类型的主机密钥,算法不匹配导致连接直接中断——报错中Unable to negotiate with port 22中间的host字段为空是协商中断时还没完成连接握手,不是仓库地址填写错误。旧设备OpenSSH版本低于8.8,默认未禁用ssh-rsa所以可以正常连接。 - SSL证书报错:Visual Studio 2019自带的Git for Windows版本内置CA证书库较旧,若你处于公司内网走代理抓包,会因为证书链不被信任触发该报错。
修复步骤
修复SSH连接问题
- 打开资源管理器进入当前用户的SSH配置目录,默认路径为
C:\Users\<你的Windows登录用户名>\.ssh - 若目录下无名为
config的无后缀文件,新建纯文本文件,命名为config(注意要关闭资源管理器的“隐藏已知文件扩展名”选项,避免文件实际名为config.txt导致配置不生效) - 在config文件中写入以下配置,针对Azure DevOps域名单独放开ssh-rsa算法支持:
Host ssh.dev.azure.com HostName ssh.dev.azure.com User git HostKeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa IdentitiesOnly yes IdentityFile ~/.ssh/id_rsa
注意:如果你生成SSH私钥时自定义了文件名或存储路径,将IdentityFile后的路径替换为你私钥的实际绝对路径即可
- 打开PowerShell或CMD执行连通性测试命令:
ssh -T git@ssh.dev.azure.com,若返回认证成功的提示(会显示你的Azure DevOps账号关联信息),说明SSH配置生效。
修复SSL证书报错
- 长期安全方案:如果处于公司内网环境,向IT运维部门获取内网代理/网关的根证书,分别导入到Windows系统“受信任的根证书颁发机构”存储、以及VS2019自带Git的信任证书库中即可。
- 临时测试方案:打开VS2019的Git全局设置,添加配置项
http.sslVerify = false临时关闭SSL校验,仅用于验证克隆流程,测试完成后务必改回true,避免遭遇中间人攻击。
验证注意事项
- 优先在命令行执行
git clone <你的仓库SSH克隆地址>验证,命令行克隆成功后再通过VS2019操作,VS2019会自动读取当前用户目录下的SSH配置和全局Git配置,无需在VS内重复配置密钥。 - 如果提示私钥权限错误,右键点击私钥文件→属性→安全,删除除当前Windows登录用户外的所有权限条目,确保仅当前用户拥有私钥的读取权限,OpenSSH会拒绝读取权限过宽的私钥文件。
内容的提问来源于stack exchange,提问作者Mahbub
相关产品推荐
相关产品推荐

