调试记录:git版本更新之后导致的git push失败

背景:硬盘坏了,更换硬盘重新安装软件,提交代码执行完git push 后显示:

username@host.com: Permission denied (publickey).

fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

提示SSH公钥认证失败(SSH无法通过密钥进行身份验证)

操作步骤:

  1. 检查~/.ssh目录目录下还有没有SSH密钥对(私钥:id_rsa, 公钥id_rsa.pub),有,但还是重新生成了
    ssh-keygen -t rsa -b 4096 -C "username@host.com" //-t 指定密钥类型为rsa,-t密钥长度为4096
  2. 将公钥添加到Gerrit服务器:将~/.ssh/id_rsa.pub文件的内容复制到gerrit服务器
  3. 检查SSH配置:在~/.ssh/config文件中,检查并指定针对特定主机的配置
    Host host.com
    HostName host.com
    User username #gerrit上的用户名
    Port 29418 #Gerrit通常使用29418端口,而不是默认的22
    IdentityFile ~/.ssh/id_rsa #私钥路径
  4. 测试SSH连接:执行ssh -T git@host.com,显示git@gerrit.host.com: Permission denied (publickey),连接仍然被拒
  5. 通过ssh命令的-v参数来查看调试信息,来定位问题(会输出详细的连接过程,包括尝试使用的密钥文件)
    执行ssh -v -p 29418 git@host.com后返回:

表示客户端和服务器在支持的签名算法上不匹配,服务器可能不支持客户端提供的RSA密钥类型(尤其是如果服务器是较旧的系统,我的ssh客户端OpenSSH9.9默认禁用了不安全的ssh-rsa签名算法,Gerrit服务器GerritCodeReview_2.16只支持较旧的ssh-rsa签名算法还未更新支持更安全的算法,导致客户端和服务器之间没有共同支持的签名算法,因此认证失败。注:这是安全策略不兼容的问题而不是密钥无效问题,所以只在我更新了客户端版本之后这个问题才出现)

6.版本不兼容问题解决

  • 方式一:在配置文件中为gerrit主机添加配置
    Host host.com
    HostName host.com
    User username
    Port 29418
    IdentityFile ~/.ssh/id_rsa
    #添加以下两行为Gerrit服务器临时启用兼容算法
    PubkeyAcceptedAlgorithms +ssh-rsa #告诉客户端启用服务器支持的ssh-rsa算法
    HostkeyAlgorithms +ssh-rsa #告诉客户端启用服务器的ssh-rsa主机密钥

    配置过后push成功

2.升级Gerrit服务器,Gerrit2.16是发布于2018前的较旧版本,建议升级到支持现代加密算法的新版本(需要管理员操作,建议用这种方式,因为方式1中ssh-rsa算法目前被认为是不安全的)

相关推荐
LayZhangStrive3 小时前
Git - 使用IDEA和git上传本地项目到Gitee远程仓库
git·gitee·idea
云泽8083 小时前
Git 版本控制系统(上):架构原理与操作入门
linux·git·架构
绝世唐门三哥4 小时前
Git - git stash 语法演进与实战指南
前端·git
梨想橙汁5 小时前
Git 分支详解:创建切换、合并分支、冲突解决实战
前端·git
那年窗外下的雪.1 天前
AIDC 学习日志|第 21 天|EVPN 多归属故障演练与中断窗口定位
网络·git·学习
玖石书1 天前
Git Submodule 完全指南:从添加到日常维护的常规操作全流程
大数据·git·elasticsearch
微尘寒风1 天前
git创建版本库
git
console.log('npc')2 天前
Git 冲突与 AI 协助指南
前端·人工智能·git·大模型
重生之我来学Python2 天前
Git-SVN 混合开发,从入门到精通!
开发语言·git·svn·github
笨笨饿2 天前
#137_死机恢复现场_Armino平台AP系统swd调试
git·python·stm32·单片机·嵌入式硬件·物联网·vim