2011-03-29 70 views
3

我在我的服務器上設置了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調用只是爲了檢查我跑作爲用戶。

有沒有更簡單的方法來實現這一目標?我的設置中是否遺漏了某些鍵?

回答

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

+0

+1在第二行有一個錯字,順便說一句 - '$ HOME/ssh'應該是'$ HOME/.ssh' – 2011-03-29 10:45:51

+0

@Mark:...並且是固定的。謝謝:) – VonC 2011-03-29 10:52:25

+0

@VonC我已經檢查了所有的權限,正如你所建議的,並通過github的幫助。我現在已經在.ssh/config文件中指定了所有必要的選項,只是爲了確定。如果我混淆了git用戶的authorized_keys,那麼我可以以它的身份登錄(然後將其恢復到原來的樣子),我可以成功地在正確的目錄中執行操作,但post-receive腳本仍然會獲得權限拒絕。有關我如何進一步調試的想法? – ghickman 2011-03-29 14:29:51