【问题标题】:git push returns "fatal: protocol error: bad line length character"git push 返回“致命:协议错误:错误的行长度字符”
【发布时间】:2023-03-17 00:07:01
【问题描述】:

我在我拥有的共享主机帐户上设置了一个远程 Git 存储库。为了允许其他开发人员推/拉,我将他的公钥 (id_rsa.pub) 添加到共享主机上 .ssh/authorized_keys 的末尾。然后他就可以做“git push”了。但是我想确保他不能在我的共享主机上做任何其他事情,只能访问 git,所以我在authorized_keys 中将其添加到他条目的开头,根据man authorized_keys

command="/usr/bin/git",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa ...

现在当他执行 git-push 时,它会在命令行上以“致命:协议错误:错误的行长度字符”响应。

我在 Google 上进行了搜索,发现其他人也遇到了这个问题,但是如果不允许其他用户访问我的共享主机帐户上的 shell,我无法找到足够的答案来解决这个问题。

【问题讨论】:

    标签: git ssh authorized-keys


    【解决方案1】:

    您需要限制其他开发者的密钥运行git-shell,如

    command="/usr/bin/git-shell -c \"${SSH_ORIGINAL_COMMAND:-}\"",no-port-...

    【讨论】:

      【解决方案2】:

      检查您的~/.ssh/config 中是否有本地命令,例如

      Host *
          LocalCommand echo 'Connected as "'%r'" to "'%h'"' ; echo 'SSH host "'%n'"'
      

      如果这样做,请确保在使用 git 服务器时不执行该命令。您可以通过为所需的主机覆盖 LocalCommand 来做到这一点:

      Host *github*
          LocalCommand ''
      
      Host *
          LocalCommand echo 'Connected as "'%r'" to "'%h'"' ; echo 'SSH host "'%n'"'
      

      【讨论】:

      • 谢谢你,这两天一直在扯我的头发。
      猜你喜欢
      • 2019-07-07
      • 2014-04-14
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      相关资源
      最近更新 更多