使用 SASL 和普通用户帐户的 Svnserve 身份验证

使用 SASL 和普通用户帐户的 Svnserve 身份验证

是否可以设置 svnserve 以便它使用系统的用户和密码进行身份验证(例如使用 /etc/shadow 文件)?我认为这将使用 SASL,但我找不到以这种方式工作的 SASL 配置。

我有一个在 Apache 下运行的 Subversion 服务器,但它非常慢。在某些情况下,使用 svnserve 速度要快得多,所以我想切换到它。svn+ssh 方法似乎对需要设置私钥/公钥的用户来说很复杂。

答案1

我没有遵循这个指南,所以我不知道它是否是最新的和准确的,但这里是:

使用 SASL 进行身份验证

此外,您不需要使用私钥/公钥(除非您有公司政策或其他东西)来使用 SVN 进行身份验证。您可以只使用 svn 客户端的内置密码提示,如果您不想每次都输入密码,可以使用缓存密码的选项。

此外,您可能想调查为什么 Apache 看起来很慢。多年来,我发现 SVN+Apache 为您提供了最大的灵活性和稳健性。我无法想象从 svn+apache 转移到 svnserve。

答案2

我调查了一下这个选项:

从 SASL 方面,您可以使用PLAIN 机制对系统帐户进行​​身份验证。最好的选择可能是 PAM 和saslauthd。但是“共享机密”机制是不可能的(除非您的系统帐户密码以明文形式存储)。

从 Subversion 的角度来看,1.6.4 版 SASL 说明在“已知问题”列表中,他们彻底禁用了 ra_svn 和 svnserve 中的 PLAIN 机制,因为它以明文形式发送密码。在1.6.5 的注释他们取消了这一限制,并解释说你应该小心保护你的网络通信。他们做出这一改变可能是因为他们意识到需要使用saslauthd

具体来说,该问题会影响使用 saslauthd 守护进程来验证用户身份的用户,因为该方法(=PLAIN)仅适用于纯文本密码。

所以总而言之,我认为你可以让它工作,但只能进行非常有限的配置:客户端和服务器必须具有 Subversion 1.6.5 或更高版本,并编译了 SASL。

相关内容