鎖定 git ssh 伺服器

鎖定 git ssh 伺服器

我想透過 ssh 設定一個 git 伺服器,並為該專案使用一個 SSH 帳戶。所有專案成員都應將其 ssh 金鑰列在authorized_keys 中。鎖定應該限制存取只能執行 git 操作,並且只能在專用目錄內進行。

創建這樣的設定的最佳方法是什麼?有 git-shell,它顯然可以鎖定只執行 git 命令,但我不知道如何限制對單一目錄的存取。還有各種 Python 和 Ruby 包裝器 - 我應該信任其中哪一個?

答案1

你可以看看吉特西斯或者矽藻土, gitolite 在授予儲存庫存取權限等方面更好,您不必擔心讓使用者存取伺服器等等

答案2

你的威脅模型是什麼?

好人不小心破壞了 git 儲存庫或其他資料:確保您的用戶只能寫入他們的 homedir、tmp 和 git 儲存庫。每次提交後備份儲存庫並定期練習恢復過程。

壞人竊取某人的私鑰並想要擁有您的系統:您的攻擊面僅限於受身份驗證保護的 sshd 部分 - 以及您使用的任何 shell 接口,因此請使其盡可能小。 Python/Ruby 包裝器涉及大量程式碼,並且存在大量錯誤空間。使用 git-shell 或考慮使用 sshd_config 中的 Match 和 ChrootDirectory 指令來限制使用者可以存取檔案系統的哪些部分。

壞人竊取某人的私鑰並獲取您的原始程式碼:教導使用者如何保護其私鑰並建立快速撤銷金鑰的程式(例如,凌晨 4 點打電話給誰以撤銷金鑰)。

不要使用.ssh/authorized_keys,而是使用AuthorizedKeyfilesshd_config 中的關鍵字來指定使用者沒有寫存取權限的路徑,例如/etc/ssh/keys/%u。很難確保用戶永遠無法用自己的副本覆蓋 .ssh/authorized_keys。

另外,保持使用者金鑰檔案和 sshd_config 版本受控,以允許審核。

相關內容