使用svnserve和SSHvalidationSubversion用户

部署我的Subversion服务器时,我不喜欢为每个用户创build一个系统帐户,所以我正在考虑另一种validation方法。

我想通过SSH只使用一个系统帐户,然后使用svnserve用户进行身份validation。

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

我的问题是, svnserve不使用passwd文件来validation--tunnel-user名,但只要SSHauthentication已经完成,就允许读写。

有没有办法强制svnserve阻止用户不在passwd中读取或提交存储库?

编辑:

如果在我的设置中没有办法达到这个目的,还有另外一种方法可以在SSH上为Subversion服务,而无需为每个用户创build一个系统帐户?

隧道模式跳过svnserveauthentication,有利于deviseSSHauthentication。

“…连接被认为是预先authentication…”

你试图将这种方法转化为做不该做的事情。 如何通过SSL使用WebDAV设置(使用Web服务器身份validation中定义的用户)呢?

我find一个简单的解决scheme 虽然svnserve不能用SSHauthentication的用户再次进行authentication,但仍然可以使用authz文件对其进行授权。

所以这里是我的设置:

  • 用户svn是主要帐户,其主页是/var/svn
  • 所有用户使用svn账号在SVN服务器上进行SSH连接
  • svn账号在每个用户的.ssh/authorized_keys中都有.ssh/authorized_keys
  • 每个公钥都以command="svnserve -r /var/svn -t --tunnel-user=<user1>"作为前缀(实际上它更长,因为我也禁用了tunneling和co。)
  • /var/svn每个存储库在conf/svnserve.conf都有authz-db = authz
  • 每个存储库都有自己的conf/authz文件来列出授权用户:
 [组]
开发者= <user1>,<user2>

 [/]
 @developers = rw
 * =

现在我可以添加一个用户,只需在/var/svn/.ssh/authorized_keys添加一个新的公钥,并添加一个新的--tunnel-user名,并将这个用户名添加到所有授权的存储库。