使用 svnserve 和 SSH 对 Subversion 用户进行身份验证

使用 svnserve 和 SSH 对 Subversion 用户进行身份验证

部署我的 Subversion 服务器时,我不喜欢为每个用户创建一个系统帐户,因此我在考虑另一种身份验证方法。

我想只使用一个带有 SSH 的系统帐户,然后使用 对用户进行身份验证svnserve

我尝试配置 SSH,以便每个用户都有不同的密钥和svnserve具有特定命令的特定命令--tunnel-user。我还将这些用户添加到我passwd的存储库中的文件中。

我的问题是,只要完成 SSH 身份验证,它就svnserve不会使用passwd文件来验证--tunnel-user名称,但允许读写。

有没有办法强制svnserve阻止未输入密码的用户读取或提交存储库?

編輯:

如果我的设置无法实现这一点,是否有其他方法可以在 SSH 上提供 Subversion 服务,而无需为每个用户创建系统帐户?

答案1

隧道模式在设计上跳过 svnserve 身份验证,转而采用 SSH 身份验证。

“...该连接被视为预先认证的...”

您正在尝试将这种方法用于不该做的事情。那么,使用 SSL 上的 WebDAV 设置(在 Web 服务器的身份验证中定义用户)怎么样?

答案2

我找到了一个简单的解决方案。虽然 svnserve 无法对通过 SSH 认证的用户再次进行认证,但它仍然可以使用 authz 文件对其进行授权。

以下是我的设置:

  • 用户svn是主帐户,其主页是/var/svn
  • 所有用户使用svn账户通过 SSH 连接到 SVN 服务器
  • svn账户拥有其账户中所有用户的所有公钥.ssh/authorized_keys
  • 每个公钥都以command="svnserve -r /var/svn -t --tunnel-user=<user1>"(实际上更长因为我还禁用了隧道和 co) 为前缀。
  • 每个存储库/var/svn都有authz-db = authzconf/svnserve.conf
  • 每个存储库都有自己的conf/authz文件来列出授权用户:
[群组]
开发人员 = <用户1>,<用户2>

[/]
@developers = rw
* =

/var/svn/.ssh/authorized_keys现在,我可以通过简单地添加一个具有新名称的新公钥来添加用户--tunnel-user,并将此用户名添加到所有授权存储库。

相关内容