Jenkins gab den Statuscode 128 mit github zurück


74

Mit GitHub Befehl habe ich:

ssh -T git@github.com
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 git@github.com:Name-MysRepo/MyRepo.git
hudson.plugins.git.GitException: Could not clone git@github.com: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 git@github.com: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.

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

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 git@github.com, 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 git@github.com.


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


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.



0

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


-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!


-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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.