Ssh
使用 svnserve 和 SSH 驗證 Subversion 使用者
在部署我的 Subversion 伺服器時,我不喜歡為每個使用者創建一個系統帳戶,因此我正在考慮另一種身份驗證方法。
我想只使用一個帶有 SSH 的系統帳戶,然後使用
svnserve
.我嘗試配置 SSH,以便每個使用者都有不同的密鑰和具有
svnserve
特定--tunnel-user
. 我還將這些使用者添加到我passwd
的儲存庫中的文件中。我的問題是它
svnserve
不使用該passwd
文件來驗證--tunnel-user
名稱,但只要完成 SSH 驗證就允許讀寫。有沒有辦法強制
svnserve
阻止不在 passwd 中的使用者在儲存庫中讀取或送出?編輯:
如果我的設置無法實現這一點,是否有另一種方法可以在 SSH 上提供 Subversion 而無需為每個使用者創建系統帳戶?
我找到了一個簡單的解決方案。雖然 svnserve 無法再次對經過 SSH 身份驗證的使用者進行身份驗證,但它仍然可以使用 authz 文件對其進行授權。
所以這是我的設置:
- user
svn
是主賬戶,它的 home 是/var/svn
- 所有使用者都使用
svn
帳戶在 SVN 伺服器上進行 SSHsvn
帳戶中包含每個使用者的每個公鑰.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 伺服器的身份驗證中定義使用者)?