2012-04-17 115 views
11

我剛剛建立了我的第一個詹金斯奴隸。我運行該版本,並且遇到了SSH密鑰的問題。 Jenkins主服務器在用戶'jenkins'下運行。我已經設置了SSH密鑰,這樣我就可以不需要密碼就可以從主服務器連接到從服務器。詹金斯 - 無法從奴隸節點克隆克隆。 SSH密鑰

例如來自主機:

[email protected]:~$ ssh slave 
Last login: Tue Apr 17 10:30:22 2012 from masterjenkins.com 
$ whoami 
jenkins 

因此,證明從節點也在'jenkins'用戶下運行。 (我已經從jenkins @ slave將public ssh密鑰複製到遠程git服務器上)。而我能夠從從手動發出git的克隆,但是當我揭開序幕,構建從主我得到這些類型的郵件:

ERROR: Error cloning remote repo 'origin' : Could not clone [email protected]:abc 
hudson.plugins.git.GitException: Could not clone [email protected]:abc 
Caused by: hudson.plugins.git.GitException: Error performing command: git clone --progress -o origin [email protected]:abc /var/lib/jenkins/workspace/abc_build 
Command "git clone --progress -o origin [email protected]:abc /var/lib/jenkins/workspace/abc_build" returned status code 128: Initialized empty Git repository in /var/lib/jenkins/workspace/abc_build/.git/ 
Host key verification failed. 
fatal: The remote end hung up unexpectedly 
Caused by: hudson.plugins.git.GitException: Command "git clone --progress -o origin [email protected]:abc /var/lib/jenkins/workspace/abc_build" returned status code 128: Initialized empty Git repository in /var/lib/jenkins/workspace/abc_build/.git/ 
Host key verification failed. 
fatal: The remote end hung up unexpectedly 
Trying next repository 
ERROR: Could not clone repository 
FATAL: Could not clone 

所以還是暗示,我的SSH密鑰未設置正確地。 任何人都可以告訴我哪些鑰匙需要複製到哪裏?

非常感謝, NS

+1

主機密鑰驗證失敗似乎表明您的Jenkins用戶從未從未接受過該服務器,並且您還沒有接受主機密鑰,請嘗試從CLI作爲jenkins用戶進行sshing以確保其正常工作,並接受主機密鑰。 – Doon 2012-04-17 12:22:07

+0

@Doon這可能最終成爲問題。我原本以爲你試圖從詹金斯試圖克隆的同一臺機器上ssh。 – 2012-04-17 12:37:51

+0

得到了混蛋!感謝您的輸入。 我複製並粘貼命令詹金斯試圖在奴隸上運行: git clone --progress -o origin git @ host:abc/var/lib/jenkins/workspace/abc 事實證明,我有一些違規的鍵在/root/.ssh/known_hosts 刪除這些並再次連接到git repo後,它的工作! – nonshatter 2012-04-17 13:30:38

回答

5

此基礎上出現你是混合了兩種不同的身份驗證方法克隆URL。您嘗試以用戶git而不是jenkins作爲SSH進入主機。通常,當您託管自己的GIT存儲庫並使用git @ servername:reponame克隆時,可以使用類似gitolite的東西。

你有沒有設置任何東西像gitolite?

嘗試像這樣的ssh'ing而不是詹金斯用戶。

ssh [email protected] 

然後看看會有什麼回報。這是一個SSH更符合你正在做的[email protected]:abc

如果你沒有設置任何服務器計算機上的其他人,然後改變你的克隆網址[email protected]:pathtorepo

更新

/home/git/.ssh/authorized_keys

應該有一個這樣的條目:(這是所有關於ONE行)

# gitolite start 
command="/home/git/bin/gl-auth-command jenkins",no 
-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAt3+od84Gc9NBVrVb3MKjekHcBDwXXONnVYMNVpuRadoz/FPJTkOIxozKVPJDPI670O252giYpF59sOKqAJL0xEVUrhq8cDFuFwQsSAp0ed1kp/GRxx+pwytL58rcVJEHAy2DkD1z5HlNaZyvIxQyfLTnYfuL1Hx6Qe7dal7mXO0= keycomment 
# gitolite end 

Add repository permiss離子在gitolite詹金斯: (您可能需要克隆承載的倉庫在同一臺機器上,作爲gitolite用戶)

git clone [email protected]:gitolite-admin 
cd gitolite-admin 
cd conf 
vi gitolite.conf 

現在找到了「ABC」的條目或添加一個,如果它不」牛逼存在

repo abc 
    RW+   = jenkins 

現在提交和推送改變

git commit -a -m "Adding user jenkins to repo abc" 
git push 

現在做你ssh [email protected]再看看gitolite告訴你有關你的新權限。

+0

嗨,對不起,我忘了補充一點,我們使用gitolite來管理我們的git用戶。 ssh從主人到奴隸作爲ssh git @奴隸只是提示輸入密碼。 有一件令我煩惱的事情是,我無法輕鬆找到一個簡單的方法來查看詹金斯像奴隸一樣奔跑。登錄到slave後,我做了一個ssh-keygen,並將這些文件保存在/home/jenkins/.ssh/id_rsa的默認位置。 然後我將公鑰複製到gitolite。 – nonshatter 2012-04-17 12:21:21

+0

@nonshatter這意味着gitolite或其他東西沒有正確設置。您確定您的服務器上的authorized_keys設置正確嗎?我使用gitlab來管理我的gitolite實例。直到您無需密碼才能成功ssh git @ host,您的克隆將無法工作。首先要檢查的是'git'用戶的服務器上的authorized_keys和你的jenkins用正確的公鑰來命名。 – 2012-04-17 12:24:56

+0

從奴隸: '$ SSH的git @主機 PTY分配請求信道失敗0 你好詹金斯,這是混帳1.7.0.4 運行gitolite v2.1-31-gf0cedeb的gitolite配置爲您提供了以下訪問: @R_ @W_ \t測試 RW \t abc 與主機的連接已關閉。' – nonshatter 2012-04-17 12:34:33