2012-04-19 7 views
20

Ich bin auf EC2 mit der Basis amazon ami linux- ich jenkins installiert, aber wenn ich den Repo von Github zu ziehen gehen bin ich die folgende Fehlermeldung gegeben:jenkins/hudson kann nicht auf GitHub Repo verbinden

Building in workspace /var/lib/jenkins/workspace/build social 
Checkout:build social//var/lib/jenkins/workspace/build social - [email protected] 
Using strategy: Default 
Cloning the remote Git repository 
Cloning repository origin 
ERROR: Error cloning remote repo 'origin' : Could not clone [email protected]:adulion/.git 
hudson.plugins.git.GitException: Could not clone [email protected]:adulion/.git 
    at hudson.plugins.git.GitAPI.clone(GitAPI.java:245) 
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1117) 
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1059) 
    at hudson.FilePath.act(FilePath.java:832) 
    at hudson.FilePath.act(FilePath.java:814) 
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1059) 
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1218) 
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:581) 
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:470) 
    at hudson.model.Run.run(Run.java:1421) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:238) 
Caused by: hudson.plugins.git.GitException: Command "git clone --progress -o origin [email protected]:adulion/.git /var/lib/jenkins/workspace/build social" returned status code 128: 
stdout: Cloning into /var/lib/jenkins/workspace/build social... 

stderr: Host key verification failed. 
fatal: The remote end hung up unexpectedly 

Ich habe einen Schlüssel für den aktuellen Benutzer generiert, der jenkins installiert hat und es geschafft hat, den Repo mit der Git-Befehlszeile zu klonen, aber jenkins kann nicht.

Ich habe die ~/.ssh-Dateien in /var/lib/jenkins/.ssh kopiert

I Github zu den bekannten Hosts hinzugefügt haben, und ich habe aus Lösungen laufen, um zu versuchen. Wer weiß, wo ich falsch liege? Gibt es eine Möglichkeit, jenkins dazu zu bringen, den öffentlichen Schlüssel zu zeigen, den er benutzt, und ich kann debuggen, wenn er den richtigen benutzt?

entfernte ich den Namen des Repo, weil seine eine private Repo

Antwort

29

Der Fehler scheint zu sein: Hostschlüsselüberprüfung fehlgeschlagen.

Sie sollten Ihren Jenkins Host als Jenkins Benutzer anmelden und laufen:

ssh [email protected] 

Dann antworten Sie mit Ja auf die Eingabeaufforderung über den Host-Schlüssel. Dies muss nur einmal durchgeführt werden.

Alternativ können Sie "StrictHostKeyChecking no" zu ~ jenkins/.ssh/config hinzufügen.

+2

'ssh git @ github.com' fragt nicht nach dem Host-Schlüssel, stattdessen echo _PTY Zuweisung Anfrage fehlgeschlagen auf Kanal 0/Hi $ {NAME}! Sie haben sich erfolgreich authentifiziert, GitHub stellt jedoch keinen Shell-Zugriff bereit._. 'StrictHostKeyChecking no' funktionierte jedoch wie ein Zauber. –

+0

I * denke * Github zu den bekannten_Hosts hinzufügen funktioniert auch? ssh-keyscan -H http://github.com >> ~/.ssh/known_hosts – paulecoyote

+0

Wenn Ihre Jenkins kopflos ist, ist eine andere bequeme Möglichkeit, ssh [email protected] von einem anderen Benutzer, und kopieren Sie dann die .ssh/know_hosts Datei zum Beispiel ~ jenkins/.ssh /. Stellen Sie außerdem sicher, dass Sie jenkins: jenkins zu allen Dateien in ~ jenkins/.ssh chown –

5

Ich bin eine einzige jenkins Maschine mit mehreren GitHub Repositories zu überprüfen, und hatte ähnliche Probleme, wenn Sie es einrichten. Am Ende habe ich eine SSH-Konfigurationsdatei für jenkins konfiguriert, damit SSH automatisch weiß, welche ID-Datei jedem Repository zugeordnet werden soll.

/var/lib/jenkins/.ssh/config:

Host github-ABC 
    HostName github.com 
    User git 
    IdentityFile /var/lib/jenkins/.ssh/id_rsa_ABC 

Im Jenkins Projekt Config unter Code-Management-Quelle, habe ich dies als Repository-Name:

[email protected]:user/repo.git 

Schließlich Ich verwende den öffentlichen SSH-Schlüssel als Bereitstellungsschlüssel im github-Repository.

+0

tun muss ich irgendwo die Konfigurationsdatei laden? –

+0

Nein, SSH sollte beim Verbinden automatisch auf ~/.ssh/config schauen. [Dokumentation] (http://linux.die.net/man/5/ssh_config) – mpdaugherty

5

Er folgt mir geholfen:

Anmeldung unter Jenkins

sudo su jenkins 

Kopieren Sie Ihre Github Schlüssel zum Jenkins .ssh Ordner

cp ~/.ssh/id_rsa_github* /var/lib/jenkins/.ssh/ 

Raname die Schlüssel

mv id_rsa_github id_rsa 
mv id_rsa_github.pub id_rsa.pub 
4

1) Wechseln Sie Benutzer int o Ihr Konto jenkins

su jenkins 

2) Erstellen Sie den Schlüssel ohne Passwort

3) ssh [email protected]

, die perfekt für mich gearbeitet.

Möglicherweise müssen Sie ein Passwort für den jenkins-Konto erstellen, wenn so sudo passwd jenkins

0

verwenden Wenn Sie als jenkins melden Sie -i ~/.ssh/id_rsa git @ Github

ssh tun. com

wo ~/.ssh/id_rsa der Pfad/to/your/ssh/Schlüssel und es wird für die Passworteingabe und

-1

Sie den sSH-Schlüssel von jenkins hinzufügen müssen Datei an die known_hosts hinzufügen Sie github Benutzer.

Generate ssh key

Gehe zu:

Github->Settings(Top right)->SSH Keys(Left Pane)->Add SSH Key