Eine Mule-Anwendung, die einen SFTP-Konnektor enthält, schlägt mit einer Ausnahme fehl, die eine Stapelverfolgung ähnlich der folgenden anzeigt:
org.mule.runtime.api.connection.ConnectionException: Could not establish SFTP connection with host: 'yourHost' at port: 'yourPort' - Algorithm negotiation fail (Es konnte keine SFTP-Verbindung mit dem Host 'yourHost' an Port 'yourPort' hergestellt werden – Algorithmusverhandlung fehlgeschlagen)Caused by: com.jcraft.jsch.JSchException: Algorithm negotiation fail (Ausgelöst durch: com.jcraft.jsch.JSchException: Fehler bei der Algorithmusverhandlung)at com.jcraft.jsch.Session.receive_kexinit(Session.java:590)at com.jcraft.jsch.Session.connect(Session.java:320)at com.jcraft.jsch.Session.connect(Session.java:183)at org.mule.extension.sftp.internal.connection.SftpClient.connect(SftpClient.java:179)at org.mule.extension.sftp.internal.connection.SftpClient.login(SftpClient.java:161)at org.mule.extension.sftp.internal.connection.SftpConnectionProvider.connect(SftpConnectionProvider.java:139)at org.mule.extension.sftp.internal.connection.SftpConnectionProvider.connect(SftpConnectionProvider.java:59)
Wenn eine sichere Verbindung zwischen einem Client und einem Server über SFTP hergestellt werden soll, legen beide Seiten eine Liste mit Schlüsselaustauschalgorithmen, kryptografischen Algorithmen, Message Authentication Code (MAC) und Kompressionsalgorithmen offen. Jeder dieser Algorithmen ist in der Reihenfolge vom sichersten bis zum unsichersten angeordnet. Die Algorithmen sollen verwendet werden, um die beste Option für die SSH-Verbindung zu ermitteln. Wenn während dieser Verhandlung keine Einigung über die zu verwendenden Algorithmus-Implementierungen erzielt wird, wird die Meldung "Algorithm negotiation fail" (Algorithmus-Verhandlung gescheitert" angezeigt.
Eine genaue Beschreibung zu dieser SSH-Algorithmusverhandlung finden Sie im Abschnitt SSH RFC4253 section 7.1.
Die Verhandlungsinformationen können in einer Mule-Anwendung angezeigt werden, indem Sie die SFTP-Debug-Protokolle aktivieren.
Im Fall von Mule 4.x genügt es, die DEBUG-Protokolle durch Setzen der Pakete zu aktivieren. Aktivieren der ausführlichen Protokollierung für das FTP-, SFTP- und FTPS-Modul. In Mule 3.x sind einige zusätzliche Änderungen erforderlich, um die DEBUG-Protokolle von JSCH abzurufen. Wenden Sie sich hierzu an den MuleSoft-Support.
Ein Beispiel für ein SFTP-DEBUG-Protokoll, das diese Verhandlung zeigt, finden Sie nachfolgend:
DEBUG 2021-03-17 19:57:23,944 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] org.mule.extension.sftp.internal.connection.SftpConnectionProvider: Connecting to host: 'myHost' at port: 'myPort'DEBUG 2021-03-17 19:57:23,945 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: Connecting to myHost port myPortDEBUG 2021-03-17 19:57:23,971 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: Connection establishedDEBUG 2021-03-17 19:57:24,002 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: Remote version string: SSH-2.0-CerberusFTPServer_11.0DEBUG 2021-03-17 19:57:24,002 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: Local version string: SSH-2.0-JSCH-0.1.54DEBUG 2021-03-17 19:57:24,002 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256DEBUG 2021-03-17 19:57:24,006 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: aes256-ctr is not available.DEBUG 2021-03-17 19:57:24,006 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: aes192-ctr is not available.DEBUG 2021-03-17 19:57:24,006 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: aes256-cbc is not available.DEBUG 2021-03-17 19:57:24,006 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: aes192-cbc is not available.DEBUG 2021-03-17 19:57:24,006 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: CheckKexes: diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521DEBUG 2021-03-17 19:57:24,075 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: CheckSignatures: ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521DEBUG 2021-03-17 19:57:24,075 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: SSH_MSG_KEXINIT sentDEBUG 2021-03-17 19:57:24,075 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: SSH_MSG_KEXINIT receivedDEBUG 2021-03-17 19:57:24,075 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: ssh-rsa,ssh-ed25519,rsa-sha2-512,rsa-sha2-256DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: aes256-ctr,aes256-cbcDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: aes256-ctr,aes256-cbcDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-md5DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-md5DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: noneDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: noneDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: en-USDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: en-USDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbcDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbcDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: noneDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: noneDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: DEBUG 2021-03-17 19:57:24,077 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: Disconnecting from myHost port myPort
In diesem Artikel werden zwei Szenarien behandelt:
Szenario 1: Fehler im Komprimierungsalgorithmus
Ein Fehler infolge des Komprimierungsalgorithmus sieht in etwa wie im folgenden Snippet aus.
com.jcraft.jsch: kex: server: zlibcom.jcraft.jsch: kex: client: noneSzenario 2: Konflikt in den verwendeten Verschlüsselungen
Ein "Cipher Mismatch" (Verschlüsselungskonflikt) sieht in etwa wie das folgende Snippet aus.
com.jcraft.jsch: kex: server: aes256-ctr,aes256-cbccom.jcraft.jsch: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc
Die vom Server und Client (SFTP-Konnektor) unterstützten SSH-Versionen werden am Anfang der DEBUG-Protokolle aufgeführt.
Remote version string: SSH-2.0-OpenSSH_8.8Local version string: SSH-2.0-JSCH-0.1.54
Als Faustregel gilt, dass jede der ausgehandelten Algorithmuskategorien (im RFC erwähnt) mindestens eine gemeinsame Implementierung zwischen Client und Server haben sollte (und ihre Einschränkungen erfüllen sollte), um fortfahren zu können.
RFC 4253: Algorithmus Verhandlung name-list kex_algorithms name-list server_host_key_algorithms name-list encryption_algorithms_client_to_server name-list encryption_algorithms_server_to_client name-list mac_algorithms_client_to_server name-list mac_algorithms_server_to_client name-list compression_algorithms_client_to_server name-list compression_algorithms_server_to_client name-list languages_client_to_server name-list languages_server_to_clientIn diesem Fall wird in jeder Zeile eine Liste der Algorithmen dargestellt, die vom Server und Client angeboten werden. Das heißt, wenn ein Algorithmus vom Server keinen passenden Algorithmus vom Client hat, schlägt die Verhandlung fehl. Im folgenden Beispiel stimmen die für "server_host_key_algorithms" angebotenen Algorithmen nicht mit dem vom Client angebotenen überein und die Verhandlung schlägt fehl.
Szenario 1 (Komprimierungsalgorithmus)
Der SFTP-Konnektor unterstützt derzeit keine "zlib"-Komprimierung. Daher ist der einzige Algorithmus, der mit der Serverseite kompatibel ist, "NONE". Über unser Ideenportal wurde eine Verbesserungsanforderung eingereicht.
Derzeit verfügbare Alternativen:
Szenario 2 (Verschlüsselungskonflikt)
a. Stellen Sie sicher, dass die verwendete JSCH-Bibliothek die Verschlüsselungen unterstützt, die Sie verwenden möchten.
Der SFTP-Konnektor verwendet die JSCH-Bibliothek, um eine Verbindung mit einem SFTP-Server herzustellen. Je nach verwendeter Version verfügt JSCH über einen Satz von unterstützten Verschlüsselungen, die in der Dokumentation beschrieben sind. In JSCH ChangeLog können Sie die Funktionen einsehen.
Beispiel:
Wenn die Bibliothek die betreffenden Verschlüsselungen nicht unterstützt, müssen Sie eine oder mehrere Verschlüsselungen aktivieren, die unter den von dieser JSCH-Version unterstützten Verschlüsselungen auf Ihrem SFTP-Server enthalten sind.
WICHTIG: Es wird nicht empfohlen, die verwendete Bibliothek zu ändern, da das Verhalten des SFTP-Konnektors mit der gebündelten Version getestet und validiert wurde. Falls Sie dies versuchen möchten, tun Sie dies in einer einfacheren Umgebung und lassen Sie sich, wenn möglich, von MuleSoft-Support bestätigen, dass die JSCH-Version kompatibel ist.
b. Überprüfen Sie, ob die Verschlüsselungen auf JVM-Ebene verwendet werden können.
Der SFTP-Konnektor verwendet die JSCH-Bibliothek, um eine Verbindung mit einem SFTP-Server herzustellen. Diese Bibliothek stützt sich letztlich auf die JCE Java(TM)-Verschlüsselungserweiterung. Bei einigen JVM-Instanzen können bestimmte Verschlüsselungen aufgrund von Kontrollbeschränkungen nicht zur Verwendung enthalten sein. Sie sollten überprüfen, ob diese Einschränkungen für den JVM-Code gelten, den Sie gemäß der Anbieterdokumentation verwenden.
Bei Oracle JVMs müssen Sie beispielsweise die JCE Unlimited Strength hinzufügen, damit bestimmte Verschlüsselungen zugelassen werden. Jede Java-Version hat ihr eigenes JCE-Matching-Paket und Installationsdetails.
Für JDK8 können Sie sich beispielsweise auf Folgendes beziehen:
Unlimited Strength-Richtlinie und Installationsdetails und Unlimited Strength-JCE-Richtliniendateien.
Haftungsausschluss: Diese Lösung enthält einen Vorschlag, der zusammen mit Ihren spezifischen Anwendungsfällen und Anforderungen berücksichtigt werden sollte, und stellt nicht eine vollständige Lösung für alle Situationen dar.
001121369

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.