Svn ssh keygen与subversion的不同用户

Svn ssh keygen与subversion的不同用户,svn,ssh-keys,Svn,Ssh Keys,我不知道如何为我服务器上的其他用户创建公钥/私钥。在我的服务器上,我通过shell键入以下内容 (uiserver):john:>ssh-keygen-tdsa 之后,我输入文件名和密码,这将成功地为“john”生成私钥和公钥对。现在,当我使用这个密钥ssh到我的subversion存储库(位于john上)时,所有操作都记录为“john”。太好了 接下来,我想为“george”创建一个公钥/私钥对,这样他就可以访问我的服务器了。我在服务器上重复了ssh-keygen。然后我把私钥给了乔治。Geo

我不知道如何为我服务器上的其他用户创建公钥/私钥。在我的服务器上,我通过shell键入以下内容

(uiserver):john:>ssh-keygen-tdsa

之后,我输入文件名和密码,这将成功地为“john”生成私钥和公钥对。现在,当我使用这个密钥ssh到我的subversion存储库(位于john上)时,所有操作都记录为“john”。太好了

接下来,我想为“george”创建一个公钥/私钥对,这样他就可以访问我的服务器了。我在服务器上重复了ssh-keygen。然后我把私钥给了乔治。George成功安装了密钥,但每次他在svn存储库中执行操作时,subversion都会将他的操作记录为“john”而不是“George”。我如何让subversion认识到“乔治”和“约翰”之间的区别

我查看了authorized_key 2,发现两个key的最终注释都是“john@uiserver". 我试图编辑评论,但subversion仍然无法识别乔治和约翰之间的区别

附加细节

根据朱利亚诺的回答,我有一个半可行的解决方案。我去了“david”机器(linux),制作了prv/pub密钥,将pub密钥附加到john的授权密钥2。完美的SVN正在以david的身份记录david的更改

我去了“george”机器(windows xp),用puttygen创建prv/pub密钥,将pub密钥附加到john的授权密钥2。George可以访问svn,但他的所有更改仍以john的身份记录。我正在尝试bojo的隧道解决方案,只要我弄清楚在TortoiseSVN中配置它的位置

回答

我使用了bojo答案的选项2。最后,我所需要做的就是在我的授权密钥中添加以下行2

command="svnserve -t --tunnel-user=george",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss <george's long public key> == meaningful comment
我的/pathtorepository/conf/passwd到我的subversion密码文件

这是否与此相关,指向博客条目

解决方案是在george.ssh目录中创建一个配置文件,并将以下内容放入其中:

Host uiserver
User george

请在此处查看有关如何使用--tunnel user命令的说明。我想George出现为John的原因是因为您没有告诉ssh会话它是哪个用户,所以它默认为John的帐户

为了澄清,原始海报有两种选择

  • 为George创建一个新用户帐户。这假设他拥有超级用户访问权限
  • 生成第二个密钥(理想情况下George会这样做),附加到John帐户的.ssh/authorized_keys文件中,并将上述链接的命令添加到.ssh/authorized_users文件中,如所述。该链接还描述了如何限制其他用户对John帐户的访问
  • 然后我把私钥给了乔治

    私钥被称为Private是有原因的。他们从未打算以这种方式转移。乔治应该在自己的用户环境中创建自己的密钥对。但这与您遇到的问题无关。键只是一个非常大的数字的主要因素(为了便于理解而过于简化)。用户标识不是密钥的一部分,而是附加到密钥上的一个“标签”,SSH对此没有多大用处

    根据您的描述,您要求George通过SSH登录John的帐户。决定登录到SVN操作的用户与用于身份验证的密钥对无关,而是与真正登录到的用户有关

    因此,George必须有自己的帐户登录到SVN服务器,存储库必须由两个帐户共享,George必须使用自己的凭据登录到服务器

    约翰的网址:svn+ssh://john@svn服务器/path/to/repo


    乔治的网址:svn+ssh://george@svn服务器/path/to/repo

    您可以尝试使用:

    ssh-keygen -C "george"
    

    这把钥匙肯定是乔治创造的。但是,在本例中,他将公钥交给John,John将公钥附加到他的.ssh/authorized_keys文件中,然后按照我链接的答案中的说明进行操作。不需要单独的帐户。如果您使用存储库的专用用户帐户,则需要。但根据描述,这是一个名为“约翰”的私人账户。因此,该解决方案有效地使乔治登录到约翰的私人帐户。不太好。是的,描述说这是一个名为“john”的私人帐户,因此我的推理是,他想使用一个帐户。他可以很容易地限制George的shell只使用svnserve,而不是实际获得shell访问john帐户的权限。谢谢bojo和juliano…我已经完成了一半的工作。我在这个问题的描述中添加了更多细节。还是不知道什么是私人帐户??谢谢你的耐心,我还在学习这个东西john,你会想以“john”的身份登录linux机器,并添加我提到的说明(或者添加一个George帐户作为超级用户,或者在john帐户下执行命令技巧)。你根本不需要配置OrtoiseSVN。谢谢bojo,我做了选项2,一切正常。我按照你和juliano的建议做了,那就是在george的机器上生成prv和pub键。很好的澄清(比我的答案更好;)+1.
    ssh-keygen -C "george"