ssh-keygen与不同的用户进行颠覆

时间:2009-02-28 13:10:15

标签: svn ssh-keys

我无法弄清楚如何为我服务器上的其他用户创建公钥/私钥。在我的服务器上,我通过shell输入以下内容

(uiserver):约翰产品:> ssh-keygen -t dsa

之后,我输入文件名和密码,这会成功导致“john”的私钥和公钥对。现在,当我使用此密钥ssh到我的subversion存储库(坐在john)时,所有操作都记录为“john”。那是完美的。

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

我查看了authorized_keys2,我注意到两个键的最终评论是“john @ uiserver”。我尝试编辑评论,但是颠覆仍然无法识别乔治和约翰之间的区别。

其他详细信息

根据Juliano的回答,我有一个半工作的解决方案。我去了“david”机器(linux),制作了prv / pub键,将pub键附加到john的authorized_keys2。完善! SVN将大卫的变化记录为大卫。

我去了“george”机器(windows xp),使用puttygen创建prv / pub键,将pub键附加到john的authorized_keys2。乔治可以访问svn,但他所有的更改仍然记录为john。我一想到在TortoiseSVN中配置它就在哪里尝试bojo的隧道解决方案。

ANSWER

我使用了bojo答案的选项2。最后,我需要做的就是将以下行添加到authorized_keys2

command="svnserve -t --tunnel-user=george",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss <george's long public key> == meaningful comment

我还添加了一行

george=george's password

到我的/ pathtorepository / conf / passwd到我的subversion密码文件

4 个答案:

答案 0 :(得分:4)

  

然后我把私钥交给乔治。

出于某种原因,私钥被称为私有。它们从不打算以这种方式转移。 George应该在自己的用户环境中创建自己的密钥对。但这与您遇到的问题无关。键只是一个非常大的数字的主要因素(过于简单易于理解)。用户身份不是密钥的一部分,而是附加到密钥的“标签”,SSH不会大量使用。

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

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

John的URL:svn + ssh:// john @svn-server / path / to / repo

George的网址:svn + ssh:// george @svn-server / path / to / repo

答案 1 :(得分:3)

svn manual处查看有关如何使用--tunnel-user命令的说明。我想象乔治出现的原因是约翰是因为你没有告诉ssh会话用户是什么,所以这是默认为约翰的账号。

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

  1. 为George创建一个新用户帐户。这假设他有超级用户访问权。
  2. 生成第二个密钥(理想情况下George执行此操作),附加到John帐户的.ssh / authorized_keys文件,并将上述链接的命令添加到.ssh / authorized_users文件中,如上所述。该链接还描述了如何限制其他用户对John帐户的访问权限。

答案 2 :(得分:0)

这与此SO question有关,指向博客条目 svn over ssh prompts for the wrong username

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

Host uiserver
User george

答案 3 :(得分:0)

您可以尝试使用:

ssh-keygen -C "george"