webentwicklung-frage-antwort-db.com.de

Algorithmus-Verhandlung schlägt in Jenkins fehl

Ich versuche ssh von Jenkins auf einen lokalen Server, aber der folgende Fehler wird ausgegeben:

[SSH] Exception:Algorithm negotiation fail
    com.jcraft.jsch.JSchException: Algorithm negotiation fail
    at com.jcraft.jsch.Session.receive_kexinit(Session.Java:520)
    at com.jcraft.jsch.Session.connect(Session.Java:286)
    at com.jcraft.jsch.Session.connect(Session.Java:150)
    at org.jvnet.hudson.plugins.SSHSite.createSession(SSHSite.Java:141)
    at org.jvnet.hudson.plugins.SSHSite.executeCommand(SSHSite.Java:151)
    at org.jvnet.hudson.plugins.SSHBuildWrapper.executePreBuildScript(SSHBuildWrapper.Java:75)
    at org.jvnet.hudson.plugins.SSHBuildWrapper.setUp(SSHBuildWrapper.Java:59)
    at hudson.model.Build$BuildExecution.doRun(Build.Java:154)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.Java:533)
    at hudson.model.Run.execute(Run.Java:1754)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.Java:43)
    at hudson.model.ResourceController.execute(ResourceController.Java:89)
    at hudson.model.Executor.run(Executor.Java:240)
Finished: FAILURE

Installierte Version von Java auf dem SSH-Server:

Java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

Installierte Java-Version auf dem Client:

Java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

Auch diese Lösung ausprobiert: JSchException: Algorithmus-Negotiation . Von PuTTY scheint alles in Ordnung zu sein. Die Verbindung ist hergestellt, aber wenn ich den Jenkins-Job auslöst, wird der Fehler ausgelöst. Sollte ich eine andere Version des SSH-Servers ausprobieren? Jetzt benutze ich copssh.

32
sarbo

TL; DR-Bearbeitung Ihrer sshd_config und Aktivierung der Unterstützung für diffie-hellman-group-exchange-sha1 und diffie-hellman-group1-sha1 in KexAlgorithms:

KexAlgorithms [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

Ich vermute, dass das Problem nach der folgenden Änderung in OpenSSH 6.7 aufgetreten ist: "Der Standardsatz von Verschlüsselungen und MACs wurde geändert, um unsichere Algorithmen zu entfernen." (siehe changelog ). Diese Version wurde am 6. Oktober veröffentlicht und am 21. Oktober für Debian-Tests (siehe Debian changelog ) veröffentlicht.

OpenSSH aktiviert standardmäßig nur die folgenden Schlüsselaustauschalgorithmen:

  • [email protected]
  • ecdh-sha2-nistp256
  • ecdh-sha2-nistp384
  • ecdh-sha2-nistp521
  • diffie-hellman-group-exchange-sha256
  • diffie-hellman-group14-sha1

Während JSch behauptet, diese Algorithmen (siehe unter "Funktionen") für den Schlüsselaustausch zu unterstützen:

  • diffie-hellman-group-exchange-sha1
  • diffie-hellman-group1-sha1

Sie können sich also nicht auf einen gemeinsamen Algorithmus für den Schlüsselaustausch einigen. Das Aktualisieren von sshd_config (und das Neustarten des SSH-Servers) führt den Trick aus. Offenbar soll JSch seit Version 0.1.50 die Methode "diffie-hellman-group-exchange-sha256" unterstützen (siehe changelog ).

63

Wir hatten das gleiche Problem mit unseren Jenkins (2.21) und dem SSH-Plugin (2.4).

Unsere Lösung ist die Verwendung der nativ Shell-Ausführung. Es scheint, dass die Jenkins-Plugins nicht die gleichen ssh-Verbindungseinstellungen wie die nativ-Shell verwenden. 

Sie können also die SSH-Verbindung wie folgt herstellen (ohne das SSH-Plugin): 

ssh [email protected] <<'ENDSSH'
 echo your remote command here
ENDSSH 

Wenn Sie Ihre Remote-Befehle mit dem obigen Code umschließen, funktioniert die Verbindung problemlos. 

Mit dieser Lösung brauchen Sie das ssh-Plugin nicht mehr. 

Zu Ihrer Information: Wir haben das Problem auf unseren mittwald-Servern, seit sie die openssh auf ihren Servern aktualisiert haben. 

6
bschauer

Wie hier beschrieben: http://sourceforge.net/p/jsch/mailman/message/32975616/ , in JSch 0.1.51 ist diffie-hellman-group-exchange-sha256 implementiert, jedoch nicht aktiviert. Sie können es mit der Funktion setConfig wie folgt aktivieren:

JSch jsch = new JSch();

Java.util.Properties configuration = new Java.util.Properties();
configuration.put("kex", "diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256");
configuration.put("StrictHostKeyChecking", "no");

Session session = jsch.getSession("username", "hostname", 22);
session.setPassword("password");
session.setConfig(configuration);
session.connect();
6
Nielsvh

In meinem Fall - OpenSSH_6.7p1 auf dem Server - musste ich KexAlgorithms und MACs ändern (zusätzliche Werte für hmac-md5, hmac-sha1, hmac-sha1-96, hmac-md5-96):

KexAlgorithms [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1

MACs [email protected],[email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,[email protected],hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96

Oben sollte platziert werden:

/etc/ssh/sshd_config

Und dann die ssh neu starten:

Sudo /etc/init.d/ssh restart
4
wierzbiks

Ich hatte genau das gleiche Problem . AS Matthieu schlug vor, dass wir einige Schlüsselaustauschalgorithmen in der sshd-config-Datei hinzufügen müssen, die in cygwin> etc> sshd_config ..__ vorhanden ist. Ich habe gerade folgendes hinzugefügt und es hat für mich gearbeitet,

KexAlgorithms diffie-hellman-group1-sha1, Kurve25519-sha256 @ libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman -sha1

Die Datei selbst ist jedoch im Nur-Lese-Modus, so dass wir allen Zugriff gewähren müssen, wie Lesen, Schreiben und Ausführen mit comand Prompt. "chmode 777 sshd_config" . fügen Sie dann die oben genannten Algorithmen hinzu. Stoppen Sie den sshd-Dienst über "net stop sshd" und starten Sie ihn dann "net start sshd".

Habe Spaß....

2
Eagle

Das hat mir nur geholfen.

Wenn Sie dieses Problem vorübergehend beheben möchten, laden Sie einfach "Jsch" mit .__ herunter. Mindest. Version 0.1.53 und verschieben Sie es in das SSH-Plugin-Verzeichnis für Beispiel: cp /tmp/jsch-0.1.53.jar/var/lib/jenkins/plugins/ssh/WEB-INF/lib/Vergessen Sie nicht, .__ neu zu starten. Jenkins Sie sollten jetzt in der Lage sein, Ihren Job mit Debian Jessie aufzubauen.

https://issues.jenkins-ci.org/browse/JENKINS-25258?focusedCommentId=274232&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-274232

1
4xy

Anstatt dies auf der Server-Seite zu beheben, können Sie auch die Client-Seite aktualisieren. Wenn Sie http://maven.Apache.org/wagon/wagon-providers/wagon-ssh/ in einer neueren Version verwenden (> = 2.12 - aktuelle Version per Sep. 2018 ist 3.2.0), ist dies der Fall Problem tritt nicht mehr auf.

<project>
  <!-- ... -->
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.Apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.6</version>
          <dependencies>
            <dependency>
              <groupId>org.Apache.maven.wagon</groupId>
              <artifactId>wagon-ssh</artifactId>
              <version>3.2.0</version>
            </dependency>
          </dependencies>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <!-- ... -->
</project>

Update 2018-10-21: Die neueste Version ist jetzt 3.2.0. Aufgrund verschiedener Schwachstellenprobleme würde ich raten, immer eine aktuelle Version von SSH- oder SSL-bezogener Software zu verwenden ...]. Überprüfen und aktualisieren Sie daher Ihre Abhängigkeiten in Ihrem Code.

1
Alexander

Wenn Sie hier landen, weil Sie den gleichen Fehler in PyCharm erhalten - 

Ich verwende 2016.2.3 und kann nur ein Upgrade durchführen, wenn ich auf das Abonnementmodell konvertiere. Das Problem wird nur in meiner Windows-Box angezeigt. Ich konnte den Remote-Server nicht wie in anderen Antworten (KexAlgorithms) beschrieben aktualisieren.

Meine Lösung ist 

  1. Klicken Sie auf Hilfe
  2. Wählen Sie "Aktion suchen".
  3. Geben Sie "Switch IDE Boot JDK .." ein.
  4. Verwenden Sie den Dropdown-Pfeil und klicken Sie auf die Option "..."
  5. Suchen Sie die von Ihnen verwendete Java-Version auf Ihrem lokalen Rechner und wählen Sie diesen Ordner aus. 

PyCharm wird neu gestartet und ich kann ssh zu Remote-Servern.

0
FineJ

Ich hatte auch ähnliche Probleme mit ähnlichen Ausnahmen auf der Jenkins-Konsole. Dann versuchte ich die Lösung von Matthieu Wipliez. Es funktionierte jedoch nicht, da auf meinem SSH-Server (Remote-Rechner: Linux ubuntu 16.04) bereits dieselbe Konfiguration vorgenommen wurde.

Nachdem ich einige Stunden verbracht hatte, habe ich gerade meine SSH Plugin - Version überprüft, die 2.1 war, und ich habe sie auf den neuesten Stand (2.5) aktualisiert. 

Und raten Sie mal, was es funktioniert hat !!

Ich weiß nicht, ob es in jedem ähnlichen Fall funktionieren wird, aber ich möchte vorschlagen, es zuerst zu versuchen. Es kann Ihre Zeit sparen.

0
Amey Deshmukh