错误:在git命令

时间:2016-04-05 09:29:49

标签: git ssh sh

我写了一个强制命令脚本,必须通过ssh为每个git命令执行。所以,我在服务器端的/.ssh/authorized_keys中添加了这一行:

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

我将wrapper.sh文件放在bin文件夹中,并带有以下代码:

#!/bin/sh
echo -n "Execute the git command? (y/n)?"
read answer
if echo "$answer" | grep -iq "^y" ;then
    exec git-shell -c "$SSH_ORIGINAL_COMMAND"
else
    echo Goodbye
fi

所以,当我启动任何git命令时,例如git push origin master,在客户端上我得到以下错误:

fatal: protocol error: bad line length character: Exec

我如何解决它?我注意到一个非git命令,如:

ssh User@myhost ls

脚本正常运行。

1 个答案:

答案 0 :(得分:0)

当您使用git而不是ssh时,您的本地git将不允许您与脚本进行互动。它使用其协议,第一个echo将破坏协议(因此错误)。

如果能以这种方式工作会很好,但事实并非如此。