如何保护 svn+ssh 结帐用户的安全?

如何保护 svn+ssh 结帐用户的安全?

我们所有的 SVN 存储库都托管在一台专用机器上,所有开发人员都可以访问这台机器。有时我们需要在一台不属于我们自己或自己操作的机器上签出存储库。目前,我们都使用自己的系统 (SSH) 帐户来执行此操作,但我希望使用一些可用于此操作的通用“checkoutsvn”用户。此用户仅用于从存储库签出,但不应允许其登录系统(无 shell 访问权限)。我尝试通过将该帐户的默认 shell 设置为 /sbin/nologin 来执行此操作,但 SVN 失败了,因为显然 svn+ssh 需要 shell 访问权限。

你该怎么做?有没有什么好的解决方案?

答案1

我的网站托管商有以下说明:

使用 nano 或 FTP 客户端打开 ~/.ssh/authorized_keys 并输入以下内容(全部在一行上):

command="/usr/bin/svnserve -t -r /home/[username]/svn",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty [public key text from id_rsa.pub]

如果您希望该帐户拥有多个 svn 用户,则 ~/.ssh/authorized_keys 中的命令也应该给出 –tunnel-user= 选项。不是(网络主机)用户名;而是您希望用户的签入和签出显示的名称。

来自 svnserve 手册页:

-r root, --root=root
      Sets the virtual root for repositories served  by  svnserve.   The
      pathname  in URLs provided by the client will be interpreted rela‐
      tive to this root, and will not be allowed to escape this root.

答案2

经过一番思考,我认为使用 svn+ssh 并不是解决此问题的方法。因此,我切换到 https 上的 svn,它提供了更细粒度的控制。

相关内容