Ssh

使用 svnserve 和 SSH 驗證 Subversion 使用者

  • October 28, 2011

在部署我的 Subversion 伺服器時,我不喜歡為每個使用者創建一個系統帳戶,因此我正在考慮另一種身份驗證方法。

我想只使用一個帶有 SSH 的系統帳戶,然後使用svnserve.

我嘗試配置 SSH,以便每個使用者都有不同的密鑰和具有svnserve特定--tunnel-user. 我還將這些使用者添加到我passwd的儲存庫中的文件中。

我的問題是它svnserve不使用該passwd文件來驗證--tunnel-user名稱,但只要完成 SSH 驗證就允許讀寫。

有沒有辦法強制svnserve阻止不在 passwd 中的使用者在儲存庫中讀取或送出?

編輯:

如果我的設置無法實現這一點,是否有另一種方法可以在 SSH 上提供 Subversion 而無需為每個使用者創建系統帳戶?

我找到了一個簡單的解決方案。雖然 svnserve 無法再次對經過 SSH 身份驗證的使用者進行身份驗證,但它仍然可以使用 authz 文件對其進行授權。

所以這是我的設置:

  • usersvn是主賬戶,它的 home 是/var/svn
  • 所有使用者都使用svn帳戶在 SVN 伺服器上進行 SSH
  • svn帳戶中包含每個使用者的每個公鑰.ssh/authorized_keys
  • 每個公鑰都帶有前綴command="svnserve -r /var/svn -t --tunnel-user=<user1>"(實際上更長,因為我還禁用了隧道和 co。)
  • 每個儲存庫/var/svn都有authz-db = authz``conf/svnserve.conf
  • 每個儲存庫都有自己的conf/authz文件來列出授權使用者:
[團體]
開發人員 = <user1>,<user2>

[/]
@developers = rw
* =

/var/svn/.ssh/authorized_keys現在我可以通過簡單地添加一個帶有新名稱的新公鑰來添加一個使用者--tunnel-user,並將這個使用者名添加到所有授權的儲存庫中。

隧道模式跳過 svnserve 身份驗證,而設計為支持 SSH 身份驗證。

“……連接被認為是預先認證的……”

您正試圖將這種方法轉變為做它不應該做的事情。不如使用基於 SSL 的 WebDAV 設置(在 Web 伺服器的身份驗證中定義使用者)?

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