2011-09-23 44 views
6

我最近在Cygwin環境中使用SSH密鑰和其他東西安裝了Gitolite。Gitolite沒有更新authorized_keys文件

我成功安裝了Gitolite並訪問了gitolite-admin存儲庫,配置並放置了新密鑰。當我commit泰德和push ED,一切都很好,直到我發現我不能訪問新的倉庫或再次gitolite-admin庫...

然後我通過SSH進入我的服務器,發現gitolite刪除了所有的公衆密鑰authorized_keys除了我用SSH配置的默認SSH密鑰外。

我檢查,如果掛鉤傳播,一切都看起來很好 - Gitolite創建新庫和編譯新gitolite.conf

我不知道我錯過了 - 什麼是錯的,但我沒有一個想法這是什麼。

最後我看到文件~/.gitolite/src/sshkeys-lint管理authorized_keys文件,但我不太瞭解shell腳本語言。

+0

聽起來你可能在'authorized_keys'文件上有權限問題? – Nic

+0

'authorizad_keys'在git用戶上有600個permision,他可以讀取,因爲我可以通過ssh訪問,如果我運行'〜/ .gitolite/src/gl-setup-authkeys --batch〜/ .gitolite/keydir',就可以讀取。 ..'authorized_keys'被更新,一切正常問題是我必須這樣做,並不會自動觸發 – Rafael

+0

@melee感謝您的語法檢查。我會盡力寫更好的問題/答案 – Rafael

回答

6

當你提交時,你是否在控制檯(從你正在提交的機器上)得到以下錯誤?

remote: FIND: Parameter format not correct 
remote: FIND: Parameter format not correct 

如果是,那麼問題是find.exe。

Windows的\ windows \ system32文件夾中有一個find.exe,cygwin有它自己的find.exe。通常\ windows \ system32首先在環境變量'path'中。

Gitolite在其腳本中使用'find',但不幸的是find.exe從windows而不是從cywin被執行。

現在要解決該問題,請轉到環境變量選項卡,並在system32之前添加cygwin的bin目錄。

在此之後,你不會再面臨「授權清除一個提交authorized_keys文件」的問題。

我有gitolite在windows server 2008機器上工作,鏡像工作正常。 (我已經完成了這個作爲一個奴隸和主人是CentOS的機器。) 更多信息, 正如你已經安裝的sshd作爲Windows服務,cygwin的路徑將被給予較低proirity在Windows路徑會一命嗚呼。

+0

我會檢查第一次機會,我有 – Rafael

+0

我遇到了同樣的確切問題。但是,將cygwin添加到路徑不適用於我。它可能需要重新啓動此修復程序?另一件事..向路徑添加'c:\ cygwin \ bin \ find.exe'會不會更聰明?這樣你就不會將任何系統功能置於危險之中。 – NickSuperb

+0

謝謝,它爲我工作! Gitolite無法更新authorized_keys文件,因爲它使用了錯誤的find.exe,當從Cygwin的SSHD deamon/service調用時(但是爲什麼?!這應該是固定的 - 當從cygwin命令行調用它時,它工作完美)。 @Nick:是的,似乎你必須重新啓動服務(或服務用戶帳戶?)才能發現PATH已經改變....(我必須至少在XP上) – Bjarke