我在我的服务器上设置了gitosis设置,我试图创建一个post-receive钩子来检查远程计算机上工作目录的更改。Gitosis post-receive hook部署存储库获取公钥错误
最初我得到一个错误,说cannot open /home/user/source/testing-local/.git/FETCH_HEAD: Permission denied
所以我将工作目录的.git文件夹的组所有权更改为git用户。
之后我得到了错误Host key verification failed
,这导致我检查哪个用户正在运行钩子,当然是git(愚蠢的我!),所以我在gitosis中为git用户设置了一个gitosis密钥,并启用了gitosis那在gitosis.conf中。现在我越来越老Permission denied (publickey).
我的后收到钩看起来是这样的:
#!/bin/bash
while read oldrev newrev refname
do
if [ "$refname" == "refs/heads/master" ]; then
WORKDIR=/home/user/source/testing-local
export GIT_DIR=$WORKDIR/.git
pushd $WORKDIR >/dev/null
id
git pull --quiet >/dev/null
fi
done
的id
调用只是为了检查我跑作为用户。
有没有更简单的方法来实现这一目标?我的设置中是否遗漏了某些键?
+1在第二行有一个错字,顺便说一句 - '$ HOME/ssh'应该是'$ HOME/.ssh' – 2011-03-29 10:45:51
@Mark:...并且是固定的。谢谢:) – VonC 2011-03-29 10:52:25
@VonC我已经检查了所有的权限,正如你所建议的,并通过github的帮助。我现在已经在.ssh/config文件中指定了所有必要的选项,只是为了确定。如果我混淆了git用户的authorized_keys,那么我可以以它的身份登录(然后将其恢复到原来的样子),我可以成功地在正确的目录中执行操作,但post-receive脚本仍然会获得权限拒绝。有关我如何进一步调试的想法? – ghickman 2011-03-29 14:29:51