解决:git升级之后,pull、push远程库权限校验出错--fatal: Could not read from remote repository

git升级之后,pull、push远程库权限校验出错--fatal: Could not read from remote repository.

1.报错

Unable to negotiate with 192.168.129.190 port 29418: no matching host key type found. Their offer: ssh-rsa,ssh-dss

2.背景

git做了升级,从2.33.0版本到2.35.1版本

3.解决过程

一开始我以为ssh公钥过期了,于是重新生成公钥,并加到git服务器上,然而依旧是报同样的错误,我有多试了几次结果一样,所以公钥密钥是没问题的

于是我怀疑是升级的版本跟之前的密钥验证有变动,错误信息翻译:未匹配主机密钥类型,应该是加密算法的支持问题

一通百度,好多说要在ssh的config下加上,但报了另一个错误Permission denied

Host ssh_server
HostKeyAlgorithms +ssh-dss

看到一篇博客说ssh/config下的配置不生效,要去git安装目录下的etc/ssh/ssh_confg下配置才有用,按照里面原有的配置复制一份改为自己git的ip地址就真的生效了

但是,事实上经过测试在~/ssh/config是会生效的,问题只是在于少了一项配置PubkeyAcceptedAlgorithms +ssh-rsa,在openssh的更新日志也有给出兼容方法

最终:

HOST yourIp
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

4.原因

git for window 2.33.1及其之后的版本使用了OpenSSH8.8

2021年09月26日发布的OpenSSH 8.8中移除了对RSA-SHA1的支持,在其更新日志中有提到这个不兼容更新,大体意思就是1. SHA-1哈希算法默认禁用,2.用户可以自启用SHA-1算法

在这里插入图片描述

5.另一种解决方法

既然是SHA-1加密不支持,那么解决方案除了启用这个加密算法,还有一个方式就是使用别的算法来生成密钥,当然需要去git服务器上重新添加公钥

ssh-keygen -t ed25519 -C "注释信息(一般是邮箱)" # ED25519 加密方式

6.参考

Gitee的帮助文档关于SSH失效

OpenSSH更新日志

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值