2011-11-26 78 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