![gitolite 允許已存在於authorized_keys 檔案中的用戶](https://rvso.com/image/668787/gitolite%20%E5%85%81%E8%A8%B1%E5%B7%B2%E5%AD%98%E5%9C%A8%E6%96%BCauthorized_keys%20%E6%AA%94%E6%A1%88%E4%B8%AD%E7%9A%84%E7%94%A8%E6%88%B6.png)
我正在使用 gitolite 來限制存儲庫的權限,到目前為止它運行良好,直到我嘗試克隆和推送其公鑰已添加到authorized_keys 中的用戶,而不是通過 gitolite。我認為問題是我正在使用可以訪問伺服器的密鑰。當我嘗試克隆 server:reponame 時,出現錯誤,指出儲存庫不存在,當我從 repositories/reponame 克隆並嘗試推送時,出現以下錯誤:
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 370 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Empty compile time value given to use lib at hooks/update line 6
remote: Use of uninitialized value in require at hooks/update line 7.
remote: Can't locate Gitolite/Hooks/Update.pm in @INC (@INC contains: /Library/Perl/Updates/5.10.0 /System/Library/Perl/5.10.0/darwin-thread-multi-2level /System/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0 /Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0 /Network/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level /System/Library/Perl/Extras/5.10.0 .) at hooks/update line 7.
remote: BEGIN failed--compilation aborted at hooks/update line 7.
remote: error: hook declined to update refs/heads/master
有沒有辦法讓已經有權利存取伺服器的使用者取得 gitolite 儲存庫的權限?我知道我可以為用戶使用另一個金鑰並將其添加到 gitolite keydir 中,但對於這些用戶來說,也可以存取 gitolite 儲存庫會更自然。
答案1
tl;dr 版本:為 gitolite 使用單獨的金鑰檔案。
遲到總比不到好。
只需將已經存在的金鑰檔案新增至 gitolite/keys dir、git add、git commit、git push 即可。 gitolite 將產生一則訊息,例如
remote: WARNING: keydir/keyfile_which_was_added.pub duplicates a non-gitolite key, sshd will ignore it
並且/home/git/.ssh/authorized_keys
持有兩次密鑰,一次是已經存在的,另一次是在
# gitolite start
和
# gitolite end
部分。
我嘗試在該部分之後移動現有(舊)密鑰# gitolite
,但隨後我的 ssh 登入僅顯示 gitolite 訊息並退出。
解決方案將是對 gillolite 使用單獨的公鑰。