4

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

(uiserver):john:> ssh-keygen -t dsa

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

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

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

附加细节

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

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

回答

我使用了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 到我的颠覆密码文件

4

4 回答 4

4

然后我把私钥给了乔治。

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

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

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

约翰的网址:svn+ssh://john@svn-server/path/to/repo

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

于 2009-02-28T14:01:24.257 回答
3

在svn 手册中查看有关如何使用 --tunnel-user 命令的说明。我想乔治出现为约翰的原因是因为你没有告诉 ssh 会话它是哪个用户,所以它默认为约翰的帐户。

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

  1. 为 George 创建一个新用户帐户。这假设他具有超级用户访问权限。
  2. 生成第二个密钥(最好是 George 这样做),附加到 John 帐户的 .ssh/authorized_keys 文件,然后将上述链接的命令添加到 .ssh/authorized_users 文件中,如所述。该链接还描述了如何限制其他用户对 John 帐户的访问。
于 2009-02-28T14:00:51.513 回答
0

这是否与这个SO 问题有关,指向博客条目svn over ssh 提示输入错误的用户名

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

Host uiserver
User george
于 2009-02-28T13:55:02.977 回答
0

您可以尝试使用:

ssh-keygen -C "george"
于 2012-01-03T17:29:30.610 回答