it-swarm.com.de

Verwalten von SSH-Schlüsseln in Jenkins for Git

Ich versuche, Jenkins mit einem von GitHub gehosteten Repository zum Laufen zu bringen (mithilfe des Jenkins Git-Plugins). Das Repository verfügt über mehrere Git-Submodule, daher bin ich mir nicht sicher, ob ich versuchen möchte, mehrere Bereitstellungsschlüssel zu verwalten.

Mein persönliches GitHub-Benutzerkonto ist ein Mitarbeiter jedes Projekts, das ich mit Jenkins zusammenarbeiten möchte. Daher habe ich einen SSH-Schlüssel in /var/lib/jenkins/.ssh Generiert und meinem persönlichen GitHub-Konto hinzugefügt.

Wenn ich jedoch versuche, die Repository-URL zu meiner Jenkins-Projektkonfiguration hinzuzufügen, erhalte ich Folgendes:

Failed to connect to repository : Command "git ls-remote -h [email protected]:***/***.git HEAD" returned status code 128:
stdout: 
stderr: Host key verification failed. 
fatal: The remote end hung up unexpectedly

Wenn ich einen Build plane, erhalte ich ebenfalls:

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

Ich habe auch versucht, eine SSH-Konfigurationsdatei wie beschrieben einzurichten hier , aber ohne Erfolg.

Kann jemand Licht ins Dunkel bringen? Vielen Dank

[~ # ~] edit [~ # ~]

Ich sollte hinzufügen, dass ich CentOS 5.8 ausführe

53
James

Es sieht so aus, als ob der github.com - Host, zu dem Jenkins eine Verbindung herstellen möchte, nicht unter dem $HOME/.ssh/known_hosts Des Jenkins-Benutzers aufgeführt ist. Jenkins läuft auf den meisten Distributionen als Benutzer jenkins und hat daher ein eigenes .ssh - Verzeichnis zum Speichern der Liste der öffentlichen Schlüssel und known_hosts.

Die einfachste Lösung, die ich mir vorstellen kann, um dieses Problem zu beheben, ist:

# Login as the jenkins user and specify Shell explicity,
# since the default Shell is /bin/false for most
# jenkins installations.
Sudo su jenkins -s /bin/bash

cd SOME_TMP_DIR
# git clone YOUR_GITHUB_URL

# Allow adding the SSH Host key to your known_hosts

# Exit from su
exit
63
Tuxdude

Haben Sie versucht, sich als Benutzer von jenkins anzumelden?

Versuche dies:

Sudo -i -u jenkins #For RedHat you might have to do 'su' instead.
git clone [email protected]:your/repo.git

Oft wird ein Fehler angezeigt, wenn der Host nicht hinzugefügt oder autorisiert wurde (daher melde ich mich immer manuell als Hudson/Jenkins für die erste Verbindung zu Github/Bitbucket an), aber der von Ihnen angegebene Link behebt das angeblich.

Wenn dies nicht funktioniert, kopieren Sie den Schlüssel erneut. Stellen Sie sicher, dass es sich um den Pub-Schlüssel handelt (dh id_rsa.pub). Vielleicht hast du ein paar Charaktere verpasst?

6
Adam Gent

Nach diesem Artikel können Sie folgenden Befehl versuchen:

   ssh-add -l

Wenn Ihr Schlüssel nicht in der Liste ist, dann

   ssh-add /var/lib/jenkins/.ssh/id_rsa_project
4
RabitChang

Dies funktioniert für mich, wenn Sie config und die private Schlüsseldatei in der /Jenkins/.ssh/ müssen Sie chown (Besitzer wechseln) für diese 2 Dateien dann Neustart jenkins, damit die jenkins-Instanz diese 2 Dateien liest.

1
Jianhong