1

我在我拥有的共享主机帐户上设置了一个远程 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 时,它会在命令行上响应“致命:协议错误:错误的行长度字符”。

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

4

2 回答 2

3

您需要将其他开发人员的密钥限制为git-shell运行

command="/usr/bin/git-shell -c \"${SSH_ORIGINAL_COMMAND:-}\"",no-port-...
于 2010-07-11T20:04:14.523 回答
2

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

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

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

Host *github*
    LocalCommand ''

Host *
    LocalCommand echo 'Connected as "'%r'" to "'%h'"' ; echo 'SSH host "'%n'"'
于 2014-09-25T15:28:45.733 回答