我写了一个强制命令脚本,必须通过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
脚本正常运行。
答案 0 :(得分:0)
当您使用git
而不是ssh
时,您的本地git
将不允许您与脚本进行互动。它使用其协议,第一个echo
将破坏协议(因此错误)。
如果能以这种方式工作会很好,但事实并非如此。