2012-04-17 10 views
11

Ich habe gerade meinen ersten Jenkins-Sklaven eingerichtet. Ich starte den Build und habe Probleme mit den SSH-Schlüsseln. Der Master Jenkins Server läuft unter dem Benutzer 'jenkins'. Ich habe die SSH-Schlüssel so eingerichtet, dass ich ohne Passwort vom Master zum Slave SSH kann.Jenkins - Klon kann nicht vom Slave-Knoten gesendet werden. SSH-Schlüssel

z.B. Vom Master:

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

Das beweist, dass der Slave-Knoten auch unter dem Benutzer 'jenkins' läuft. (Ich habe den öffentlichen SSH-Schlüssel vom jenkins @ slave auf den Remote-Git-Server kopiert). Und ich bin in der Lage, die git clone manuell vom Slave zu erteilen, aber wenn ich aus dem Build vom Master Kick bekomme ich diese Arten von Nachrichten:

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 

So ist es nach wie vor anzudeuten, dass meine SSH-Schlüssel nicht gesetzt richtig auf. Kann mir jemand sagen, welche Schlüssel ich wo kopieren muss?

Vielen Dank, ns

+1

auch host key verification failed scheint darauf hinzuweisen, dass Ihr Jenkins-Benutzer niemals in diesen Server ssh'd ist und Sie den Host-Schlüssel nicht akzeptiert haben. Versuchen Sie sshing von der CLI als jenkins-Benutzer, um sicherzustellen, dass er funktioniert und akzeptiert der Hostschlüssel – Doon

+0

@Doon Dies könnte am Ende das Problem sein. Ich hatte ursprünglich gedacht, dass du versuchst, von derselben Maschine zu kommen, von der Jenkins versucht zu klonen. –

+0

Hab den Bastard! Vielen Dank für Ihre Anregungen. Ich kopierte und klebte den Befehl jenkins versuchte auf dem Slave zu laufen: git klon --progress -o ursprung git @ host: abc/var/lib/jenkins/workspace/abc und es stellte sich heraus, ich hatte einige beleidigende Schlüssel in /root/.ssh/known_hosts Nach dem Entfernen dieser und der Verbindung mit dem Git Repo noch einmal, es hat funktioniert! – nonshatter

Antwort

5

auf der Klon-URL Basierend es scheint, Sie sind Vertauschen zwei verschiedene Authentifizierungsmethoden. Sie versuchen, SSH in den Host als Benutzer git nicht jenkins. In der Regel, wenn Sie Ihre eigenen GIT-Repositorys hosten und mit git @ servername klonen: Reponame verwenden Sie etwas wie Gitolit.

Haben Sie etwas wie Gitolit eingestellt?

Versuchen Sie ssh'ing stattdessen als der Benutzer jenkins.

ssh [email protected] 

Dann sehen Sie, was das zurückgibt. Dies ist ein SSH mehr im Einklang mit der [email protected]:abc Sie tun.

Wenn Sie nur knapp sein Ziel Setup etwas anderes auf dem Server-Computer ändern, um Ihren Klon, dann URL [email protected]:pathtorepo

aktualisieren

/home/git/.ssh/authorized_keys

wie diese einen Eintrag haben sollte: (Das alles auf ist EINE Zeile)

# 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 

Hinzufügen Repository-Zul Ionen jenkins in gitolite: (Sie haben auf der gleichen Maschine klonen, die Ihre Repositories als gitolite Benutzer bewirtet)

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

Sie nun den Eintrag für ‚abc‘ oder fügen Sie ein, wenn es doesn‘ t existieren

repo abc 
    RW+   = jenkins 

Jetzt begehen und Push ändert

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

Jetzt tun Sie ssh [email protected] wieder zu sehen, ob gitolite Sie über Ihre neue Berechtigungen erzählt.

+0

Hallo, tut mir leid, ja, ich habe vergessen hinzuzufügen, dass wir Gitolit verwenden, um unsere Git Benutzer zu verwalten. ssh'ing vom Master zum Slave als ssh git @ slave fragt nur nach einem Passwort. Eine Sache, die mich nervt ist, dass ich nicht leicht einen einfachen Weg finden konnte, um zu sehen, wer jenkins läuft, als auf dem Sklaven. Nachdem ich mich am Slave angemeldet hatte, habe ich einen ssh-keygen erstellt und die Dateien im Standardverzeichnis /home/jenkins/.ssh/id_rsa gespeichert. Ich kopierte dann den öffentlichen Schlüssel zu Gitolit. – nonshatter

+0

@nonshatter Das bedeutet, dass Gitolit oder etwas anderes nicht richtig eingerichtet ist. Sind Sie sicher, dass die authorized_keys auf Ihrem Server korrekt eingerichtet sind? Ich verwende Gitlab, um meine Gitolite-Instanz zu verwalten. Bis du ssh git @ host ohne Passwort erfolgreich shst, funktionieren deine Klone nicht. Das erste, was zu prüfen ist, ist dass die authorized_keys auf dem Server für den 'git' Benutzer und deine jenkins darin mit dem richtigen öffentlichen Schlüssel benennen. –

+0

Vom Slave: '$ ssh git @ host Zuweisungsanforderung PTY auf Kanal fehlgeschlagen 0 hallo jenkins, dann ist dies gitolite v2.1-31-gf0cedeb 1.7.0.4 die gitolite Config gibt Ihnen die folgenden Zugriff auf git läuft : Testen RW \t abc Verbindung zum Host geschlossen. " – nonshatter