Verwalten von SSH-Schlüsseln in Jenkins für Git

Lesezeit: 3 Minuten

Verwalten von SSH Schlusseln in Jenkins fur Git
James

Ich versuche, Jenkins mit einem von GitHub gehosteten Repository (unter Verwendung des Jenkins Git-Plugins) zum Laufen zu bringen. 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 der Projekte, die ich mit Jenkins einbringen möchte, daher habe ich darin einen SSH-Schlüssel generiert /var/lib/jenkins/.ssh und fügte es meinem persönlichen GitHub-Konto hinzu.

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

Ebenso erhalte ich, wenn ich einen Build plane:

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

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

Kann jemand Licht ins Dunkel bringen? Danke

BEARBEITEN

Ich sollte hinzufügen, dass ich CentOS 5.8 verwende

1647271685 393 Verwalten von SSH Schlusseln in Jenkins fur Git
Tuxdude

Es sieht aus wie die github.com Host, mit dem Jenkins eine Verbindung herzustellen versucht, ist nicht unter dem Jenkins-Benutzer aufgeführt $HOME/.ssh/known_hosts. Jenkins läuft auf den meisten Distributionen als Benutzer jenkins und hat daher seine eigene .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

  • @Adam – Du hast das nie erwähnt known_hosts 😉 Du redest nur von der id_rsa.pub Öffentlicher Schlüssel 😀

    – Tuxdude

    9. März 2013 um 19:30 Uhr


  • Ich tat. (Häufig tritt ein Fehler auf, wenn der Host nicht hinzugefügt oder autorisiert wurde). Ich habe die Datei nur nicht explizit erwähnt.

    – Adam Gent

    9. März 2013 um 19:31 Uhr

  • Wie auch immer, Sie sind mir zuvorgekommen, während ich die Antwort formatierte: D

    – Tuxdude

    9. März 2013 um 19:32 Uhr

  • Vielen Dank für Ihre beiden Antworten 😉 Ich dachte, es könnte etwas mit bekannten Hosts zu tun haben, aber ich kann mich nicht als Jenkins anmelden. Ich habe es geschafft, ein Passwort für den Benutzer festzulegen, und ich erhalte eine Passwortabfrage, aber die Benutzersitzung wird nicht gewechselt, wenn ich sie angebe. Gibt es eine Möglichkeit, GitHub manuell als bekannter_Host hinzuzufügen?

    – James

    9. März 2013 um 19:34 Uhr

  • Ich glaube, ich kenne das Problem. Führen Sie diesen Befehl aus: usermod -s '/bin/bash' jenkins um die Shell als festzulegen /bin/bash statt der Vorgabe /bin/false das wird für den jenkins-Benutzer eingestellt. Dann solltest du das können su.

    – Tuxdude

    9. März 2013 um 20:00 Uhr

Haben Sie versucht, sich als jenkins-Benutzer anzumelden?

Versuche dies:

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

Oft sehen Sie einen Fehler, 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 eingefügte Link behebt das angeblich.

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

Demzufolge Artikelkönnen Sie den 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

Dies funktioniert für mich, wenn Sie die Konfiguration und die private Schlüsseldatei in der Datei haben /Jenkins/.ssh/ du musst chown (Besitzer ändern) für diese 2 Dateien dann neu starten jenkins, damit die jenkins-Instanz diese beiden Dateien lesen kann.

1002110cookie-checkVerwalten von SSH-Schlüsseln in Jenkins für Git

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy