我已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