部署我的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名,并将这个用户名添加到所有授权的存储库。