我的服务器上有gitosis设置,我正在尝试创建一个post-receive挂钩,用于检查远程计算机上工作目录的更改。
最初我收到错误cannot open /home/user/source/testing-local/.git/FETCH_HEAD: Permission denied
,因此我将工作目录的.git文件夹的组所有权更改为git用户。
在此之后我得到了错误Host key verification failed
,这导致我检查哪个用户正在运行钩子,git当然(傻我!),所以我为git用户设置了gitosis的一个键,gitosis正在运行在gitosis.conf中启用并启用它。现在我得到了旧Permission denied (publickey).
我的post-receive挂钩看起来像这样:
#!/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
来电只是为了检查我正在运行的用户。
有没有更简单的方法来实现这个目标?!我的设置中是否遗漏了一些关键信息?
答案 0 :(得分:2)
您需要确保执行该挂钩的git用户的$HOME
环境变量的值。
$HOME/.ssh
是ssh在握手期间查找私钥的地方
另外,请确保gitosis上的ssh目录结束has the right permissions。
server$ chmod go-w ~/
server$ chmod 700 ~/.ssh
server$ chmod 600 ~/.ssh/authorized_keys
最后看"Permission denied (publickey)" section on GitHub,重复我上面提到的关于HOME
的内容:
这通常是在
ssh
无法找到您的密钥时造成的 确保您的密钥位于默认位置~/.ssh
。