2011-11-26 79 views
1

我从自制软件(brew install jenkins)安装了Jenkins配置项。所以,它在我自己的用户下运行。除了SSH访问我的Git存储库之外,一切正常。我不想创建一个单独的用户(例如jenkins)来运行Jenkins并为其创建单独的SSH密钥。我只想使用我自己的SSH密钥。在命令行上访问我的远程git仓库可以正常使用我的ssh密钥,但在Jenkins中它不起作用。它给出了一个“拒绝的权限(公钥)”的错误(用户名和项目会被混淆(<user><project>)):Jenkins在Mac OS X上使用自制软件安装的SSH问题

Started by user anonymous 
Checkout:workspace//Users/<user>/.jenkins/jobs/<project>_run_tests/workspace - [email protected] 
Using strategy: Default 
Last Built Revision: Revision 093f1641f26632afd1a74c14276ec544356c1d08 (origin/dev) 
Checkout:workspace//Users/<user>/.jenkins/jobs/<project>_run_tests/workspace - [email protected] 
Fetching changes from 1 remote Git repository 
Fetching upstream changes from ssh://[email protected]/<user>/<project>.git 
ERROR: Problem fetching from origin/origin - could be unavailable. Continuing anyway 
ERROR: (Underlying report) : Error performing command: /usr/local/bin/git fetch -t ssh://[email protected]/<user>/<project>.git +refs/heads/*:refs/remotes/origin/* 
Command "/usr/local/bin/git fetch -t ssh://[email protected]/<user>/<project>.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: Permission denied (publickey). 
fatal: The remote end hung up unexpectedly 

ERROR: Could not fetch from any repository 
FATAL: Could not fetch from any repository 
hudson.plugins.git.GitException: Could not fetch from any repository 
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1012) 
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:972) 
    at hudson.FilePath.act(FilePath.java:783) 
    at hudson.FilePath.act(FilePath.java:765) 
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:972) 
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1195) 
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:568) 
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:457) 
    at hudson.model.Run.run(Run.java:1404) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:230) 

现在看来,这是不是用我的SSH密钥连接到GIT服务器。我试着向詹金斯清洗plist添加一个UserName键,做了重启,但没有效果。

我怎样才能让詹金斯使用我的SSH密钥连接到我的远程git回购?

+0

嗯,当我从命令行启动jenkins时,它就会起作用。通过执行'/ usr/bin/java -jar/usr/local/Cellar/jenkins/1.440/lib/jenkins.war',没有问题。所以,我现在的问题是:我如何从launchd运行jenkins并仍然可以通过SSH访问我的远程git仓库? –

+0

颠覆这一点。在Mac OSX 10.7和Jenkins 1.442上遇到完全相同的问题,无法找到解决方案。任何人对此有任何想法? – seanoshea

+0

查看http://lists.macosforge.org/pipermail/launchd-dev/2007-November/000081.html,看起来.plist文件需要位于“LaunchAgents”而不是“LaunchDaemons”目录中。 – seanoshea

回答

2

我不知道自制软件如何设置Jenkins,但显然它运行在无法访问您的ssh代理并且您的ssh密钥受密码保护的环境中。

当您在终端窗口中运行它时,您的环境中有SSH_AUTH_SOCK变量,ssh客户端使用该变量进行身份验证。如果您不能使用ssh代理,则需要从ssh密钥中删除密码。

+0

只需删除您的密码。这对我有效。 – Heitara