一、问题描述
1.1 版本太低要求升级
昨天AS一直提示我,git版本太低了, 我大概记得我之前的Git for Windows版本是2.12.0的。说需要升级到2.19版本之后,
然后我想着既然要升级,不如直接升级到最新版本。然后我就升级到了Git for Windows 2.36.1版本。
1.2 Git for Windows 下载地址
1.3 查看当前的git版本
我们使用命令
git version
即可查出当前版本已更新为2.36.1.windows.1
版本。
1.4 更新版本之后的问题
更新版本之后,AS弹出如下所示的【SSH Password Login】窗口
真的是莫名其妙啊!!!
二、排查问题
2.1 排查RSA公钥和私钥问题
我还以为是我的RSA公钥和私钥
出问题了,经过一番排查,本地的RSA公钥和私钥
没问题,和GitLab
服务器上的公钥也匹配。
那就得查询另外的问题了。
2.2 查一下[Git for Windows]的升级日志
2.3 查看OpenSSH版本信息
OpenSSH will disable the ssh-rsa signature scheme by default in the
next release.
2.4 最终原因
好吧,通过上面的排查,我们发现在OpenSSH v8.8p1
版本开始,Git for Windows 客户端会默认禁用ssh-rsa。而我们的Gitlab服务器目前只支持ssh-rsa,
当你不能自己升级远程服务器的 openssh 版本或修改配置让它使用更安全的算法时, 在本地 ssh 针对这些旧的ssh server重新启用 ssh-rsa 也是一种权宜之法.
如上所示,在本机~/.ssh/目录添加config文件,写入配置:
Host * (全部开启,也可针对性调整,此处请删除)
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
三、修复问题
- 进入.ssh目录
cd ~/.ssh
- 新建config文件
touch config
- 编辑config文件
vim config
- 添加如下内容
Host *
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
5. 保存退出
看评论区,应该有部分读者不熟悉vim操作。这里讲一下怎么保存退出。 可以参考链接:如何保存文件并退出Vim
- 使用vim编辑好文件后,按下
Esc键
退出编辑状态,进入到命令模式
- 按
:
键
- 按
w
键
- 按
q
键 , (即 第2步骤到第4步骤的结果为:输入字符:wq
)
- 然后按下
回车Enter键
即可
- 重新尝试和远程服务器连接的相关git操作,成功
好吧,最终成功解决这个问题!