You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法推送至远程Git仓库:新开发者权限配置异常排查

排查Git推送权限问题的思路和解决方案

这个问题大概率和Git Bash使用的OpenSSH客户端与PuTTY的密钥不兼容有关,结合你遇到的报错和日志信息,咱们一步步来拆解:

1. 先确认Git Bash的SSH能否正常登录服务器

PuTTY能登录不代表Git Bash的SSH客户端也能登录——两者用的是不同的密钥管理体系:PuTTY用自己的.ppk格式密钥,而Git Bash默认用OpenSSH的密钥格式。你可以让开发者在Git Bash里执行:

ssh ramon@[server.name]

如果登录失败,那就是Git Bash的SSH没正确加载对应密钥,这是核心问题。

解决方法:转换PuTTY密钥为OpenSSH格式

  • 打开PuTTYgen,加载开发者当前用来登录的.ppk私钥
  • 点击菜单栏的Conversions -> Export OpenSSH key,保存为id_rsa(注意不要加后缀)
  • 把这个id_rsa文件放到开发者Windows用户目录下的.ssh文件夹,也就是C:\Users\raimo\.ssh\
  • 关键:设置私钥权限:右键id_rsa -> 属性 -> 安全选项卡,删除所有其他用户的权限,只保留raimo用户的“读取”和“写入”权限(OpenSSH对私钥权限要求很严格,权限太宽会拒绝使用)

2. 检查本地Git仓库的远程URL是否正确

有时候克隆时可能默认用了本地Windows用户名raimo,而不是服务器上的ramon,导致推送时用错账号。让开发者在Git Bash里执行:

git remote -v

如果输出里的远程URL是raimo@[server.name]:/var/git/[repository name],就需要改成正确的账号:

git remote set-url origin ramon@[server.name]:/var/git/[repository name]

3. 确认服务器上authorized_keys的权限和格式

即使公钥已经添加,权限不对或者格式错误也会导致sshd拒绝:

  • 在服务器上执行以下命令,确保权限符合要求:
chmod 700 ~ramon/.ssh
chmod 600 ~ramon/.ssh/authorized_keys
  • 检查authorized_keys文件里的公钥是单独一行,没有多余空格、换行或截断——开发者提供的公钥ssh-rsa [key blablablabla] raimo@DESKTOP要完整占一行。

4. 理解报错“fatal: protocol error: bad line length character: ramo”的原因

这个报错本质是Git在SSH连接时收到了非Git协议的输出(比如SSH登录失败的错误信息ramo@server: Permission denied),把这些错误文本当成了Git协议内容,从而抛出格式错误。解决了前面的SSH登录问题,这个报错自然会消失。

内容的提问来源于stack exchange,提问作者PaulJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:13:57