
我已經從EPEL儲存庫安裝了gitolite3到Centos6.4。有很多事情我不喜歡,所以我開始改變它們。首先,我創建了一個名為「git」的附加使用者和群組,以遠離不起眼的 gitolite3 用戶。其次,我使用自訂資料夾 /Server/Projects 而不是 /var/lib/gitolite3。我確保所有權和權限是相同的。
設定也沒問題(su - git,然後使用管理客戶端金鑰設定 gitolite3)。
通常,在用戶端電腦上,該命令ssh git@myserver info
會產生一個漂亮的 gitolite 簡單返回,列出儲存庫和權限。但現在它要求我輸入密碼。顯然,gitolite 不再透過該用戶連接到 ssh 端口,但通常的 bash 是。
我不是 SSH 的專家,所以出了問題,或者我忘了做某件事。我該去哪裡看?我認為 /usr/share/gitolite3/gitolite3-shell 是當 git 用戶的 SSH 請求進來時 SSHD 應該呼叫的應用程式。
答案1
SSH 並不容易。我自己已經解決了,但並不明顯。這主要是 SELinux 的問題,但我發現我也沒有正確設定 pubkey。
首先,我(重新)為要管理 gitolite 伺服器的本機電腦建立了 pubkey (admin.pub),將其複製到伺服器 git 使用者主資料夾中,重新執行(在其主資料夾中的 git 使用者下)gitolite使用該公鑰進行設定。這裡要注意的是,我的本機電腦是帶有 msys-git 的 windows,使得問題並不容易解決。
# su - git
$ cd /Server/Projects
$ gitolite setup --pubkey admin.pub
..這解決了公鑰問題。 selinux 是一個更大的學習曲線,但本質上,當您複製時,您會丟失所有原始 /var/lib/gitolite3 資料夾上下文標籤。若要恢復標籤(使用 semanage),請引用與原始資料夾相同的標籤(使用 -e 標誌),即設定目前 gitolite 資料夾的位置。由於這只會新增到現有的 selinux 檔案上下文,因此您還需要從 selinux 檔案上下文中還原它們。最後的坑是使用絕對路徑,而不是相對路徑。您可以使用 ll 命令查看您做了什麼:
# semanage fcontext -a -e /var/lib/gitolite3 /Server/Projects
# restorecon -R /Server/Projects
# ll -aZ
現在,在您的本機電腦上,從公鑰所在的電腦上使用以下命令進行全部嘗試,它對我有用。請注意,我不知道ssh git@unclefloserver info
如果伺服器實際上具有請求使用者/電腦組合的公鑰,則只會傳回一個不錯的 gitolite3 repo 資訊輸出。我也有點無法理解這個概念,我正在另一台電腦上嘗試這個。
> git clone git@server:gitolite-admin
非常感謝@Etan Reisner 不斷施加壓力。