为什么使用 sasl 时 svnserve 仍要求通过 svn+ssh 输入密码?

为什么使用 sasl 时 svnserve 仍要求通过 svn+ssh 输入密码?

我已svnserve配置为从 运行inetd,并svnserve.conf设置为使用 sasl 进行身份验证。这样我就可以允许没有系统范围帐户的用户使用 访问某些存储库svn://

但是,对于拥有系统帐户的用户(例如我自己),我更喜欢使用svn+ssh://公钥身份验证。据我所知,当以 身份运行时svnserve -t,svnserve 不会要求身份验证,而是使用通过 SSH 身份验证的当前用户。我觉得这曾经有效。今天,当我使用svn+ssh://存储库路径更新工作副本时,它开始要求我输入密码。

我能确认不是 SSH 要求我输入密码,公钥认证成功,而是 svnserve/sasl 要求我输入密码。如果我关闭 sasl,它似乎可以按预期工作,但我更喜欢 sasl 而不是纯文本密码文件。我不确定这是否从未起作用,或者它被我没有注意到的最近升级破坏了。这是在 Debian stretch 上使用 subversion 1.9.4 时发生的。

答案1

阅读svnserve源代码后,我找到了答案。即使使用-t,它仍然委托 sasl 进行身份验证,只是现在可以通过 SSH 用户进行外部身份验证。但为了使其工作,我必须在我的文件中将其EXTERNAL作为允许的机制添加到。mech_list/usr/lib/sasl2/svn.conf

相关内容