我无法弄清楚如何为我服务器上的其他用户创建公钥/私钥。在我的服务器上,我通过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密码文件
答案 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会话用户是什么,所以这是默认为约翰的账号。
为了澄清,原始海报有两种选择。
答案 2 :(得分:0)
这与此SO question有关,指向博客条目 svn over ssh prompts for the wrong username ?
解决方案是在george .ssh目录中创建配置文件并将以下内容放入:
Host uiserver
User george
答案 3 :(得分:0)
您可以尝试使用:
ssh-keygen -C "george"