如何使用公钥/私钥对进行SVN检出?

30

我需要检查一些代码并运行它。我有这个URL:

svn+ssh://myuser@www.myclient.com/home/svn/project/trunk

我有一个私钥文件,要如何获取这个代码?


1
你使用的操作系统是什么? - Neall
这个程序本地是在Mac OS X Leopard上运行的,但实际上应该在一个RH ES4盒子上运行。 - Sam McAfee
1
我也遇到了“-bash: svn+ssh://... blah blah找不到该文件或目录”这个问题,尽管我已经安装了svn和ssh并且经常使用它们。我可以通过Subclipse插件在Eclipse中完成这个操作吗?(我也经常使用这个插件) - Sam McAfee
8个回答

59

请注意,我始终会对密钥路径使用完整路径。 - Alexis Wilke
路径现在是绝对的! - David
只有使用一个仓库服务器时,它才可用;如果需要多个仓库服务器,则需要使用 ~/.ssh/config 文件。 - AnViKo
适用于在svn+ssh托管的项目上使用Maven发布目标。 - Grim

15

将此条目添加到您的~/.ssh/config文件中:

Host YOUR_SERVER
IdentityFile YOUR_PRIVATE_KEY_PATH # (ex: ~/.ssh/rsa)
User USER_NAME

更多选项,请参见ssh_config手册页面


8

只需使用ssh-add命令(它会要求您输入密码,这是您创建此公共私有密钥对时使用的密码)。

ssh-add PATH_TO_YOUR_PRIVATE_JEY
e.g. ssh-add ~/.ssh/myPrivateKey.key

通过以下步骤验证您是否正确添加了密钥:

ssh-add -l

那将列出它正在使用的所有身份文件。

5
私钥存放在客户端机器上,通常命名为~/.ssh/id_rsa~/.ssh/id_dsa~/.ssh/identity,具体取决于SSH版本和密钥类型。但是,您可以使用ssh -i path/to/private.key来代替。
这假定相应的公钥存在于服务器中的~/.ssh/authorized_keys中,并且您的本地计算机正在运行OpenSSH客户端。如果您在Windows上使用PuTTY,则只需打开Pageant程序,并通过GUI导入密钥即可。

6
这个问题要求使用svn,而不是ssh。 - Transcendence

2
除了Eclipse 3.7和Subversive的两个截图外,还有以下答案。

常规设置
输入用户名!(我在截图之前忘记了这个)。不要输入密码。


SSH设置 如果您的私钥受到密语保护,请输入密语。


一张图片胜过千言万语。


1
将私钥添加到您的~/.ssh/文件夹中,然后运行ssh-agent $SHELL; ssh-add;,接下来该URL的svn co指令应该可以工作了。

您的私钥 不应该 存放在 ~/.ssh/config 文件中。 - ephemient
哎呀,你说得对,应该是 authorized_keys - Swaroop C H

1

以下是我用来通过svn+ssh从Mac OS X命令行连接到服务器的步骤:

在服务器上:

ssh-keygen -b 1024 -t dsa -f mykey   (creates mykey and mkey.pub files)

mykey.pub的内容复制到~/.ssh/authorized_keys文件中(如果该文件不存在,则创建authorized_keys文件)

在本地计算机上下载mkey并运行:

chmod 600 mkey  (the next step won't run otherwise)
svn-add mkey  (enter your passphrase)

使用ssh从您的svn服务器签出:

svn co svn+ssh://user@server.com/repos/path

从您的服务器中删除mkey和mkey.pub


从未听说过“svn-add”,尤其是带有密码短语的,我认为你指的是“ssh-add”。 - josh

0
SVN_SSH="ssh -i /xxx/xxx/id_rsa" svn checkout svn+ssh://username@svn.xxx.com/data

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接