如何使用SSH密钥配置Hudson和git插件

jlp*_*lpp 15 git ssh tomcat windows-services hudson

我有一个运行在Tomcat Windows服务上的git插件的Hudson(持续集成系统).msysgit已安装且msysgit bin目录位于路径中.安装了PuTTY/Pageant/plink,msysgit配置为使用它们.

当我运行尝试克隆git存储库的作业时,我收到以下错误:

$ git clone -o origin git@hostname:project.git "e:\HUDSON_HOME\jobs\Project Trunk\workspace" 
ERROR: Error cloning remote repo 'origin' : Could not clone git@hostname:project.git 
ERROR: Cause: Error performing git clone -o origin git@hostname:project.git e:\HUDSON_HOME\jobs\Project Trunk\workspace 
Trying next repository 
ERROR: Could not clone from a repository 
FATAL: Could not clone 
hudson.plugins.git.GitException: Could not clone 
Run Code Online (Sandbox Code Playgroud)
  1. 从命令行运行git clone -o origin git @ hostname:project.git"e:\ HUDSON_HOME\jobs\Project Trunk\workspace"可以正常运行.
  2. 我已经确认我的问题与Hudson git clone错误不同,因为git在路径中,我在Hudson的Configure System页面上没有得到任何关于git可执行文件的错误.

这让我相信问题是拥有Tomcat/Hudson Windows服务(本地系统)的用户没有设置SSH密钥来克隆git存储库.

我的问题是,如何设置,以便git plugin/msysgit在尝试克隆时知道使用特定的SSH密钥?我不认为Pageant会工作,因为Tomcat服务作为"本地系统"用户运行,但我可能错了.我尝试将Pageant设置为服务(使用runassvc.exe),传递相应的密钥,并将其作为"本地系统"运行.Tomcat/Hudson服务似乎无法从分页服务中看到密钥.是否有其他设置密钥的技巧?

谢谢.

编辑:关于http://n4.nabble.com/Hudson-with-git-and-ssh-td375633.html的讨论表明其他人有类似的问题.建议使用ssh-agent,这个工具确实带有msysgit,但我不确定如何将它与Hudson服务结合使用.如果有人能填补空白,仍然是一个很好的线索.感谢Peter对该链接的评论.

此外,关于http://n4.nabble.com/questions-about-git-and-github-plug-ins-td383420.html的讨论始于同一个问题.我正试图复活那个帖子.

Egg*_*eff 7

Windows的另一个重要注意事项(我想附加到这个答案,因为我很快发现了这个问题,但是我发现这个额外的细节我只需要经过几个小时的搜索):

Git希望将%HOME%环境变量设置为您的用户目录(IE C:\ Documents and Settings\hudsonuser)...这就是它知道如何使用密钥文件查找.ssh目录!

我在这里发现了服务器故障(但没有足够的声誉来支持它).


Wil*_*ley 6

我们使用Hudson,使用ssh密钥从git中检出源代码.但是,我们实际上在一个ubuntu服务器上有Hudson.哈德森的密钥对生活在~hudson/id_rsa~hudson/id_rsa.pub

因此,调整我们对Windows设置的建议:

我们团队中基于Windows的开发人员使用MSysGit并定期通过git over ssh检查代码 - 但不使用Putty/Pageant.由于登录时出现一些协议错误,我们发现Pageant很痛苦.相反,他们将git配置为使用openSSH(它是安装期间的选项之一).他们的公共/私有密钥对,然后住在~username/id_rsa~username/id_rsa.pub它所有的作品.

因此,我建议您更改您的git配置以使用OpenSSH而不是选美.如果不出意外,你不必担心开始选美.

您可以使用PuttyGen生成密钥.但是,如果您使用OpenSSH而不是选美,则需要导出合适的私钥(从PuttyGen顶部的菜单之一)并将其另存为id_rsa,并从PuttyGen的GUI复制并粘贴公钥(它显示但不会为OpenSSH保存合适的版本并保存为id_rsa.pub.这是因为Putty使用的格式与OpenSSH的格式略有不同.

或者,当然,您可以随时在ubuntu服务器(实际服务器或通过VirtualBox)上托管您的哈德森服务器

  • 在Windows(x64)上,本地系统"user""home"目录是`%WINDIR%\ SysWOW64\config\systemprofile` - 因此您可以将`.ssh`文件夹放在那里,而不必使用其他用户. (3认同)