Hier ist mein Setup:
Sudo su jenkins
probiere und ssh -vT [email protected]
versuche, werde ich immer nach meiner Passphrase gefragt, aber ich bin immer irgendwann authentifiziert. (Die ausführliche Option zeigt unter anderem, welche Taste verwendet wird).Also:
[email protected]:~/jobs/test git/workspace$ git pull
Enter passphrase for key '/var/lib/jenkins/.ssh/id*_rsa':
Already up-to-date.
Bis zu diesem Punkt habe ich die Anweisungen zu dem Brief befolgt. Das Problem ist, dass der Jenkins-Job mit dem folgenden Fehler fehlschlägt:
status code 128:
stdout:
stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Dies ist derselbe Fehler, den ich bekomme, wenn ich die Passphrase tippe (aber Jenkins fragt mich natürlich nicht nach der Passphrase). Folgende seiten:
weisen Sie darauf hin, dass der ssh-agent dabei helfen kann, sich an die Passphrase zu erinnern, die er ausführt, wenn ich meinen eigenen Benutzer verwende, nicht jedoch die jenkins -ID. Beachten Sie, dass es bei meinem normalen Benutzer Folgendes gibt:
echo "$SSH_AUTH_SOCK"
/tmp/keyring-nQlwf9/ssh
Während das Ausführen des gleichen Befehls wie meine 'Jenkins' nichts ergibt (nicht einmal die Erlaubnis verweigert)
Ich verstehe das Problem so, dass die Passphrase nicht in Erinnerung bleibt . Haben Sie eine Idee? Soll ich einen ssh-agent oder einen Schlüsselring-Manager für den jenkins-Benutzer starten? Ist SSH-Weiterleitung geeignet, wenn an dieselbe Maschine weitergeleitet wird? Gibt es eine hellere Idee?
ps: Ich habe nie Sudo gitted
, ich habe immer jenkins oder mein Benutzerkonto verwendet (wie in diesem SO post - Ubuntu/GitHub SSH Key Issue ) erwähnt.
Da über mehrere Monate niemand die Antwort aus den Kommentaren geschrieben hat, werde ich das schnell tun.
Es gibt 2 mögliche Probleme/Lösungen:
id_rsa mit falschem Benutzer erstellt
Erstellen Sie id_rsa als jenkins-Benutzer (siehe hudson kann nicht aus git repository holen.)
Lassen Sie die Passphrase leer
Ich bin dieses Problem umgangen, indem ich beim Erstellen der Schlüssel einfach die Passphrase leer gelassen habe.
Um zusammenzufassen, was auf dem Jenkins-Server zu tun ist:
# 1. Create the folder containing the SSH keys if necessary
if [ ! -e ~jenkins/.ssh ]; then mkdir ~jenkins/.ssh; fi
cd ~jenkins/.ssh/
# 2. Create the SSH pair of keys
# The comment will help to identify the SSH key on target systems
ssh-keygen -C "jenkins" -f ~jenkins/.ssh/id_rsa -P ""
# 3. Assign the proper access rights
chown -R jenkins ~jenkins/.ssh/
chmod 700 ~jenkins/.ssh
chmod 600 ~jenkins/.ssh/*
Merken:
ssh -vvv [email protected]
(Adresse gemäß Ihrem Git-Server ändern)Ich würde hinzufügen, dass wenn Sie die Schlüssel von Hand erstellt haben, sie möglicherweise immer noch in Ihrem Besitz sind und nicht von jenkins gelesen werden können, versuchen Sie Folgendes:
Sudo chown jenkins -R /var/lib/jenkins/.ssh/*
Zu prüfen sind folgende:
Nach allen Prüfungen -> try ssh -vvv [email protected] Versuchen Sie nicht, die Konfiguration in jenkins vorzunehmen, bis ssh funktioniert!
Wenn Sie Jenkins als Dienst in Windows ausführen, müssen Sie den Benutzer, der den Dienst ausführt überprüfen. Wenn Sie die Schlüssel mit dem Benutzer "MACHINENAME\user" erstellt haben, ändern Sie den Dienst, damit der Benutzer, auf dem er ausgeführt wird, übereinstimmt
Für Mac-Benutzer kann das Problem gelöst werden, indem die vorhandenen Schlüssel entfernt und neue private und öffentliche Schlüssel erstellt werden. Führen Sie dazu die folgenden Schritte aus:
1.Entfernen Sie alle Public- und Private-Schlüssel unter /Users/Username/.ssh.
2.Entfernen Sie alle Anmeldeinformationen, die in Jenkins auf der Registerkarte Credentials gespeichert sind.
3.Entfernen Sie die vorhandenen Public SSH-Schlüssel, die in den Github Repository-Einstellungen definiert sind.
4.Erstellen Sie neue SSH-Schlüssel (privat und öffentlich: id_rsa und id_rsa.pub), indem Sie die Schritte ab https://confluence.atlassian.com/bitbucketserver/creating-ssh-keys-776639788.html ausführen # CreatingSSHkeys-CreatinganSSHkeyonLinux & MacOSX
5.Setzen Sie den neu erstellten öffentlichen SSH-Schlüssel (id_rsa.pub) in Github oder einen entsprechenden Repository-Einstellungen.
6. Erstellen Sie in Jenkins neue Anmeldeinformationen, indem Sie den private SSH-Schlüssel (id_rsa) für Ihren Github-Benutzernamen hinzufügen.
7. Der Fehler sollte jetzt entfernt werden.
schlüssel müssen von Jenkins-Benutzer generiert werden.
Sudo su jenkins
ssh-keygen
sobald der Schlüssel generiert wurde, sollte er als ssh-Schlüssel in bitbucket oder github hinzugefügt werden.