2011-10-25 82 views
3

我有一個Git的bitbucket存儲庫,我想讓我的Jenkins服務器自動訪問。這隻能使用公鑰/私鑰進行驗證。所以我創建了一個密鑰對並將公鑰上傳到bitbucket。公鑰和私鑰位於運行jenkins的tomcat用戶的.ssh文件夾中的服務器上。當我以該用戶在服務器上登錄時,我能夠克隆我的項目。如何從jenkins登錄到git bitbucket存儲庫

但是我無法讓jenkins實際檢查bitbucket中的代碼。它總是說:

Permission denied (publickey). 
fatal: The remote end hung up unexpectedly 

嗯,我認爲這是因爲通過ssh訪問資源庫時,我需要爲我的私鑰和詹金斯提供的密碼是無法自動做到這一點。我看,這是有可能通過提供包含以下內容的.ssh文件夾內的一個配置文件,以避免beeing要求的密碼:

Host bitbucket.org 
    IdentityFile ~/.ssh/id_dsa 

我這樣做了,但只要我提供這個文件的我不能再從bitbucket中克隆版本庫。甚至不直接從服務器獲取如上所示的相同錯誤消息。

有沒有人設法使這個設置工作?我也在這裏閱讀了下面的線程,這對我來說是沒用的:How do i set a private ssh key for hudson/jenkins to access bitbucket?,我檢查了tomcat真的在用戶tomcat6下運行,創建一個簡單地運行「whoami」的空測試項目。所以我幾乎沒有解決問題的想法。

回答

4

無論您是否必須爲ssh密鑰提供密碼,在您的配置中指定IdentityFile都不會改變。如果確實如此,那將是一個巨大的安全漏洞。您不能要求您爲ssh密鑰提供密碼的唯一方法是如果您的ssh密鑰沒有密碼。

所以,你應該專門爲你的jenkins實例創建一個ssh密鑰,如果Bitbucket允許的話,只能給你的存儲庫只讀訪問權限。

+0

感謝您的幫助。這真正解決了這個問題。 – ali

+0

@ali,儘管jenkins只需要只讀訪問權限,但是除了使用ssh之外,沒有其他方法可以訪問存儲庫嗎? – jamessan

+0

nope。 jenkins git插件沒有提供其他方法。 – ali

相關問題