
我最近設定了 gitolite,用戶透過 ssh 使用「gitolite」用戶存取 git 儲存庫。
現在我想將其整合到 LDAP 中。每個使用者在 LDAP 中都有 pubkey,如果他有「git」objectClass,他將能夠透過 ssh 存取「gitolite」使用者。
我知道可以在 LDAP 中儲存公鑰,但我不確定是否可以允許基於 objectClass 在「gitosis」帳戶中進行身份驗證。
編輯:澄清一下,使用 objectClass git,使用者「foobar」將能夠透過 ssh 以「gitolite」身分登入
答案1
作者是矽藻土增加了一些有助於支援外部金鑰儲存和群組成員資訊的功能。搜尋變更日誌對於 LDAP。
若要使用外部密鑰儲存您的sshd需要支援常用.ssh/authorized_keys
文件(這是告訴我們的文件sshd跑步gl-auth-指令當一個矽藻土使用者登入)。
- 關閉正常的身份驗證金鑰產生(基於儲存庫
keydir
中的身份驗證金鑰產生gitolite-admin
):
$GL_NO_SETUP_AUTHKEYS = 0;
在您的.gitolite.rc
. - 定期(每次更改金鑰、新增使用者等):
- 將金鑰儲存中的所有 SSH 金鑰提取到某個方便的臨時目錄中(對金鑰檔案使用相同的名稱,就像它們在普通的基於儲存庫中一樣
keydir
)。 - 跑步gl-setup-authkeys具有矽藻土重建
authorized_keys
文件的其部分。
- 將金鑰儲存中的所有 SSH 金鑰提取到某個方便的臨時目錄中(對金鑰檔案使用相同的名稱,就像它們在普通的基於儲存庫中一樣
看引入的提交訊息gl-setup-authkeys對於作者自己的描述。
使用外部定義的使用者群組有點棘手,因為它通常涉及在之間插入另一個程式sshd和gl-auth-指令(組成員資格作為額外參數傳遞給gl-auth-指令)。看“用戶群組和 LDAP/類似工具”。
答案2
如果您想嘗試一些奇怪的東西,您可以將 .ssh/authorized_keys2 設為命名管道,並編寫一個腳本/程式來查詢 LDAP,執行適當的過濾,然後吐出authorized_keys 金鑰的內容。我建議使用authorized_keys2,因為您可能已經在使用authorized_keys。
您必須小心腳本(注意阻塞寫入,並知道何時執行新查詢等),但如果您做得正確,它每次都會給您正確的答案。