Gitosis post-receive hook用于部署存储库获取公钥错误

时间:2011-03-29 09:50:51

标签: git gitosis githooks

我的服务器上有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来电只是为了检查我正在运行的用户。

有没有更简单的方法来实现这个目标?!我的设置中是否遗漏了一些关键信息?

1 个答案:

答案 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