Ssh
為什麼使用 sasl 時 svnserve 仍然通過 svn+ssh 詢問密碼?
我已
svnserve
配置為執行inetd
並svnserve.conf
設置為使用 sasl 進行身份驗證。這樣我就可以允許沒有系統範圍帳戶的使用者使用svn://
.但是,對於確實有系統帳戶的使用者(例如我自己),我更喜歡使用
svn+ssh://
公鑰身份驗證。我的理解是,當執行 as 時svnserve -t
,svnserve 不會要求身份驗證,而是使用經過 SSH 身份驗證的目前使用者。我覺得這曾經奏效。今天,當我使用svn+ssh://
儲存庫路徑更新工作副本時,它開始要求我輸入密碼。我能夠確認不是 SSH 要求我輸入密碼,公鑰認證成功,是 svnserve/sasl 要求我輸入密碼。如果我關閉 sasl,它似乎可以按預期工作,但我更喜歡 sasl 而不是明文密碼文件。我不確定這是否從未奏效,或者它被我沒有註意到的最近升級破壞了。這是 Debian stretch 上的 subversion 1.9.4。
看完
svnserve
源碼,我找到了答案。即使使用-t
,它仍然委託 sasl 進行身份驗證,只是現在可以選擇通過 SSH 使用者進行外部身份驗證。但是為了使它工作,我必須在我的文件中添加EXTERNAL
一個允許的機制。mech_list``/usr/lib/sasl2/svn.conf