前言
前两天因为升级了Git导致git提交拉取的时候都提示下面这个异常,然后经过一番折腾以后终于把这个问题解决了。但是今天我升级了下Visual Studio 2022将其升级到了17.1.3版本然后又出现了这个问题,奇怪的是我使用VS 2019没有问题(VS2019没有升级),然后使用Git Bash也是可以正常拉取提交。唯独使用VS 2022就提示下面的异常(真的是问题天天有,四月特别多):
Unable to negotiate with xx.xxx.xxxx port 22: no matching host key type found. Their offer: ssh-rsa Git failed with a fatal error. Git failed with a fatal error. Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
vs 2022版本
问题分析
因为Visual Studio IDE有自己的Git扩展,既然我们设置了Git在C盘中的.SSH目录中的config配置无效,那会不会在VS 2022里面也会有一个类型于这样的配置呢?于是我搜索了一下果然让我发现了端倪。
vs2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\etc\ssh
如下是我对比VS2019和VS2022的配置:
解决方案一,切换成HTTPS的方式
1、修改本地代码关联的远程地址
git remote set-url origin https://gitee.com/ysgdaydayup/pingrixuexilianxi.git
2、重新拉取成功
git pulll
解决方案二,在ssh_config配置文件中添加对应主机地址配置
我们其实直接Copy一下VS2022新增现有配置,然后修改一下主机地址就可以了(注意添加好配置以后一定要重启一下VS 2022才会生效)。
1、该配置指的是对所有主机生效
Host * HostkeyAlgorithms +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa
2、指定对应主机生效(xx.xxx.xxxx:22)
Host xx.xxx.xxxx:22 HostkeyAlgorithms +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa