具有单个ssh帐户的SVN的多个用户

时间:2013-11-24 15:04:06

标签: svn ssh ssh-tunnel

我正在尝试将多个svn作者用于单个托管ssh帐户。我跟踪了来自http://svn.apache.org/repos/asf/subversion/trunk/notes/ssh-tricks的隧道用户的技巧,但它仍然显示与我的托管ssh帐户用户名相同的作者。我还检查过SVN版本必须比1.0.x更新,以使其适用于隧道用户。

更新

我遵循的内容:

  1. 首先,我从我的托管帐户id_rsa
  2. 中取出了密钥
  3. 然后我使用PuttyGen导入并解压缩了私钥。
  4. 之后我用Putat在Putty中创建了session 域名(.com / .net等)并在SSH-> AUTH中附加私钥 我在data中添加了我的主机帐户用户名以进行自动登录。
  5. 为了验证,我检查了会话,并且无需询问即可运行 任何密码。
  6. 现在我在id_rsa目录中创建了~/.ssh密钥的副本 authorized_keys
  7. 需要的svnserve
  8. 然后我添加了一行command="~/bin/svnserve -t -r ~/svn --tunnel-user=makki",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAfagd..... makki@domain.com
  9. 现在一切准备就绪后,我使用svnadmin create myrepo
  10. 在服务器上创建了一个repo
  11. 我用svn+ssh://mydomain.com/home/svn/myrepo和它结帐了 成功检查但现在当我提交它显示作者我的 正如我在附加的行中提到的那样,ssh帐户不是makkiauthorized_keys档案中。
  12. 请指导我在流程中缺少的内容......

    authorized_keys内容

    第1行ssh-rsa AAAAB3 ..........
    line#2 command =“〜/ bin / svnserve -t -r~ / svn --tunnel-user = makki”,no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no -pty ssh-rsa AAAAB3NzaC1yc2E .....

2 个答案:

答案 0 :(得分:2)

如果它不起作用,您必须在命令中缺少--tunnel-user选项,或者您没有为用户使用唯一键。

来自SSH configuration section of the SVN Book

  

也可以让多个用户共享一个帐户。   生成,而不是为每个用户创建单独的系统帐户   每个人的公钥/私钥对。然后放置每个公钥   进入authorized_keys文件,每行一个,并使用--tunnel-user   选项:

     

command =“svnserve -t --tunnel-user = harry”TYPE1 KEY1   harry@example.com
    command =“svnserve -t --tunnel-user = sally”TYPE2   KEY2 sally@example.com

     

这个例子允许Harry和Sally连接到同一个   帐户通过公钥认证。他们每个人都有一个习惯   将要执行的命令; --tunnel-user选项告诉svnserve   假设命名参数是经过身份验证的用户。的无   --tunnel-user,似乎所有提交都来自一个共享系统帐户

强调我的。

根据您对问题的更新,我认为您正在重复使用密钥。相反,您应该为每个用户生成一个唯一的密钥。通常,这将如何工作是用户将生成自己的密钥,然后为您提供您要添加的公钥。如果密钥已存在于〜/ .ssh / authorized_keys文件中,那么我怀疑最宽松的条目将适用。

答案 1 :(得分:1)

我的猜测是#1行与第2行中的键相同,导致sshd只使用第一行?

无论如何,有几个调试指针:

  1. 在服务器端,您可以使用--log-file选项svnserve进行调试,如果它甚至被调用

    command="~/bin/svnserve -t -r ~/svn --tunnel-user=makki --log-file /home/makki/svnserve.log",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty

    现在,如果您tail -f /home/makki/svnserve.log,如果svn按预期通过svnserve隧道,您应该会看到一些活动。

  2. 在客户端,修改Subversion config文件以指定ssh应该记录详细级别(-v选项而不-q)。这让我有很多时间了解根本原因!