Jenkins gab den Statuscode 128 mit github zurück

74

Mit GitHub Befehl habe ich:

ssh -T [email protected]
Hi (MyName)! You've successfully authenticated, but GitHub does not provide shell access.

Meine Verbindung mit GitHub ist in Ordnung (kein Problem), aber mit Jenkins habe ich diesen Fehler:

ERROR: Error cloning remote repo 'origin' : Could not clone [email protected]:Name-MysRepo/MyRepo.git
hudson.plugins.git.GitException: Could not clone [email protected]:Name-MysRepo/MyRepo.git
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.clone(CliGitAPIImpl.java:219)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1001)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:942)
    at hudson.FilePath.act(FilePath.java:904)
    at hudson.FilePath.act(FilePath.java:877)
    at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:942)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1101)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1369)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:676)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:581)
    at hudson.model.Run.execute(Run.java:1575)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:477)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:241)
Caused by: hudson.plugins.git.GitException: Command "git clone --progress -o origin [email protected]:Name-MysRepo/MyRepo.git /root/.jenkins/jobs/TestKRGDAOV01/workspace" returned status code 128:
stdout: Cloning into '/root/.jenkins/jobs/TestKRGDAOV01/workspace'...

stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Ist das Problem mit dem öffentlichen Schlüssel?

Ich benutze Jenkinsunter Tomcat 7/ Ubuntu 12.

Nizar Ouerghi
quelle

Antworten:

55

Dieser Fehler:

stderr: Berechtigung verweigert (publickey). tödlich: Das entfernte Ende legte unerwartet auf

zeigt an, dass Jenkins versucht, mit dem falschen SSH-Schlüssel eine Verbindung zu Github herzustellen.

Du solltest:

  1. Bestimmen Sie den Benutzer, als den Jenkins ausgeführt wird, z. "bauen" oder "Jenkins"
  2. Melden Sie sich auf dem Jenkins-Host an, der versucht, den Klon auszuführen. Melden Sie sich also nicht beim Master an, wenn ein Knoten tatsächlich den Build ausführt.
  3. Versuchen Sie, ssh zu github - wenn es fehlschlägt, müssen Sie den richtigen Schlüssel zu /.ssh hinzufügen
imdibiji
quelle
Ich habe keinen Zugriff auf die Anmeldung beim Master, aber ich habe einen neuen Jenkins-Job erstellt, der mein Problem behoben hat.
Vishrant
14

Zu überprüfen sind die folgenden:

  1. wenn der richtige öffentliche Schlüssel (id_rsa.pub) auf den Git-Server hochgeladen wird.
  2. wenn der richtige private Schlüssel (id_rsa) nach /var/lib/jenkins/.ssh/ kopiert wird
  3. wenn die Datei unknown_hosts im Ordner ~ / .ssh erstellt wird. Versuchen Sie ssh -vvv [email protected], Debug-Protokolle anzuzeigen. Wenn alles gut geht, wird github.com zu unknown_hosts hinzugefügt.
  4. wenn die Berechtigung von id_rsa auf 700 ( chmod 700 id_rsa) gesetzt ist

Versuchen Sie es nach allen Überprüfungen ssh -vvv [email protected].

Tim Long
quelle
Punkt 3 dieser Antwort hat mein Problem speziell gelöst. Ein Vorschlag, den ich hinzufügen möchte, ist, sicherzustellen, dass jenkins su verwendet wird, damit Punkt 3 die richtige Datei "unknown_hosts" für das jenkins-Konto ändert / erstellt. Ich habe das getan, indem ich sudo su -s / bin / bash jenkins
Jeff M
stackoverflow.com/questions/44522862/… Ich erhalte einen anderen Fehler .. und Jenkins Ordner existiert nicht im Ordner var / lib .. kann jemand helfen
Kumar Kalluri
5

Stellen Sie außerdem sicher, dass Sie die SSH-Github-URL und nicht die https-URL verwenden

Roberto
quelle
Können Sie das bitte näher erläutern? Warum funktioniert https während der Ausführung des Jobs einwandfrei, während des Abrufs jedoch eine Zeitüberschreitung?
Novaterata
@ Novaterata Es gibt zwei Protokolle, mit denen Git bei der Kommunikation zwischen Server- und Client-Computern arbeiten kann: HTTPS und SSH. Beide verwenden unterschiedliche Formate für URLs und Anmeldeinformationen für die Authentifizierung.
starscream_disco_party
@starscream_disco_party Ich verstehe, was hat das damit zu tun, warum http während der
Umfrage eine Zeitüberschreitung aufweist
4

In meinem Fall musste ich den öffentlichen Schlüssel zu meinem Repo hinzufügen (bei Bitbucket) UND den Git-Klon einmal über ssh verwenden, um die Frage "bekannter Host" beim ersten Mal mit Ja zu beantworten.

Etunko
quelle
0

Ich habe die Berechtigung meiner .ssh / id_rsa (privater Schlüssel) in 604 geändert. Chmod 700 id_rsa

Rajat Srivastava
quelle
-1

Ich habe mein Projekt (Stammordner) gelöscht und erneut erstellt. In meinem Fall war es der schnellste und einfachste Weg.

Vergessen Sie nicht, alle Änderungen zu speichern, bevor Sie Ihr Projekt löschen!

Mikhail Grunko
quelle
-2

Als ich einen ähnlichen status code 128Fehler von Jenkins bekam:

status code 128:
stdout: 
stderr: fatal: Couldn't find remote ref refs/heads/jenkins

    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2172)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1864)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$500(CliGitAPIImpl.java:78)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:545)
    at jenkins.plugins.git.GitSCMFileSystem$BuilderImpl.build(GitSCMFileSystem.java:358)
    at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:197)
    at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:173)
    at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:113)
    at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:67)
    at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:299)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE

Es war, weil ich meinen neuen Zweig "jenkins", der meinen hatte, nicht geschoben hatte Jenkinsfile. Die Lösung bestand also darin, nur meine Änderungen voranzutreiben

Frank
quelle