Security

如何保護 svn+ssh 結帳使用者?

  • November 28, 2011

我們所有的 SVN 儲存庫都託管在所有開發人員都可以訪問的專用機器上。時不時地,我們需要在不屬於我們自己或自己操作的機器上檢查儲存庫。目前我們都使用我們自己的系統(SSH)帳戶,但我想使用一些通用的“checkoutsvn”使用者,可以用於此。此使用者僅用於從儲存庫中籤出,但不應允許登錄系統(無 shell 訪問權限)。我試圖通過將該帳戶的預設 shell 設置為 /sbin/nologin 來做到這一點,但隨後 SVN 失敗,因為顯然 svn+ssh 需要 shell 訪問權限。

你怎麼做到這一點?有沒有好的解決方案?

經過一番思考,我認為使用 svn+ssh 不是這樣做的。因此,我通過 https 切換到 svn,它提供了更細粒度的控制。

我的虛擬主機有這些說明:

使用 nano 或 FTP 客戶端打開 ~/.ssh/authorized_keys 並輸入以下內容(全部在一行上):

command="/usr/bin/svnserve -t -r /home/[username]/svn",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty [public key text from id_rsa.pub]

如果你想為這個賬戶擁有多個 svn 使用者,那麼 ~/.ssh/authorized_keys 中的命令也應該有 –tunnel-user= 選項。不是(網路主機)使用者名;這是您希望使用者的簽到和簽出顯示在其下的名稱。

從 svnserve 手冊頁:

-r root, --root=root
     Sets the virtual root for repositories served  by  svnserve.   The
     pathname  in URLs provided by the client will be interpreted rela‐
     tive to this root, and will not be allowed to escape this root.

引用自:https://serverfault.com/questions/331591