Git

設置具有 ssh 訪問權限的 git 伺服器

  • February 18, 2020

我想設置一個伺服器,通過 ssh 和 https 託管帶有客戶端證書的 git 儲存庫。我不想要任何時髦的 GUI 或類似的東西(即不是 Bitbucket、GitLab 等)我想要一個僅用於託管儲存庫的最低配置。

但是,我確實希望儲存庫之間的使用者分離。

我已經有了針對 https 案例的解決方案,並且針對 ssh 有一個煩人的解決方案。

我對多使用者 ssh git 伺服器配置進行了一些搜尋,但我發現的指南的基本假設是所有使用者都可以訪問所有儲存庫。即創建一個“git”使用者,將所有使用者的公鑰添加到~git/.ssh/authorized_keys,為“git”使用者使用git-shell,並在“git”使用者下託管所有repos。

我想要完成的是託管一堆儲存庫 - 預設情況下 - 使用者無法訪問,直到通過讓管理員將他們的 ssh 密鑰添加到項目來獲得明確許可。

我以前通過在系統中為每個使用者分配一個不同的帳戶來實現這一點,並使用正常的組權限來進行共享——但由於一些原因,這很麻煩。

使此功能順利執行的一般理論是什麼?

我假設基本思想是擁有一個“git”使用者並將每個使用者都放在 ~git/authorized_keys 中,但是一旦 ssh 進行了身份驗證,它就會將有關身份驗證的資訊傳遞給一些包含所有 repo 權限的外部使用者數據庫,即然後用於適當地執行文件系統訪問檢查。

幾年前我為 SVN 做了這個​​。我設置了一個 Unix 帳戶。即git@ 添加了使用者密鑰~git/authorized_keys,以及在使用者登錄時執行伺服器(即 git-shell)的額外內容。

到目前為止,正是您在第 4 段中所說的。

您缺少的一點是,每個條目都~git/authorized_keys傳遞了一個不同的參數來git-shell告訴它使用者的名稱。git-shell然後應該對不同的使用者採取相應的行動。那就是它有自己的使用者觀念。

看看https://github.com/sitaramc/gitolite,看看它是否適合你。

引用自:https://unix.stackexchange.com/questions/568334