tutorial example java encryption ssh sftp jsch

example - jsch tunnel java



JSchException: la negociaciĆ³n del algoritmo falla (8)

Estoy intentando conectarme al servidor sftp remoto a través de ssh con JSch (0.1.44-1) pero durante "session.connect ();" Estoy recibiendo esta excepción:

com.jcraft.jsch.JSchException: Algorithm negotiation fail at com.jcraft.jsch.Session.receive_kexinit(Session.java:529) at com.jcraft.jsch.Session.connect(Session.java:291) at com.jcraft.jsch.Session.connect(Session.java:154) ...

Registros de JSch:

INFO: Connecting to xx.xx.xx.xxport 22 INFO: Connection established INFO: Remote version string: SSH-2.0-WeOnlyDo 2.0.6 INFO: Local version string: SSH-2.0-JSCH-0.1.44 INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256 INFO: aes256-ctr is not available. INFO: aes192-ctr is not available. INFO: aes256-cbc is not available. INFO: aes192-cbc is not available. INFO: arcfour256 is not available. INFO: SSH_MSG_KEXINIT sent INFO: SSH_MSG_KEXINIT received INFO: Disconnecting from xx.xx.xx.xx port 22

Puedo iniciar sesión en el servidor remoto con el comando linux sftp. Intenté encontrar algún tipo de pista en Internet pero fallé.

Depuración de salida del comando linux sftp:

OpenSSH_5.5p1-DAM_1.2, OpenSSL 0.9.8r 8 Feb 201 debug1: Reading configuration data /etc/DAM/ssh/ssh_config debug1: Applying options for * debug1: Applying options for *.* debug1: Connecting to xx.xx.xx.xx [xx.xx.xx.xx] port 22. debug1: Connection established. debug1: identity file /**/spv_id_rsa.key type -1 debug1: identity file /**/spv_id_rsa.key-cert type -1 debug1: Remote protocol version 2.0, remote software version WeOnlyDo 2.0.6 debug1: no match: WeOnlyDo 2.0.6 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.5p1-DAM_1.2 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes256-cbc hmac-md5 none debug1: kex: client->server aes256-cbc hmac-md5 none debug1: sending SSH2_MSG_KEXDH_INIT debug1: expecting SSH2_MSG_KEXDH_REPLY debug1: Host ''xx.xx.xx.xx'' is known and matches the RSA host key. debug1: Found key in ~/.ssh/known_hosts:8 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Trying private key: /**/spv_id_rsa.key debug1: read PEM private key done: type RSA debug1: Authentication succeeded (publickey). debug1: channel 0: new [client-session] debug1: Entering interactive session. debug1: Sending subsystem: sftp Connected to xx.xx.xx.xx. sftp>


agregue KexAlgorithms diffie-hellman-group1-sha1, diffie-hellman-group-exchange-sha 1 a su sshd_config en el servidor.

Esto funcionó, pero asegúrese de reiniciar sshd: sudo service sshd restart


Asegúrese de estar utilizando la última versión de JSch. Tuve exactamente el mismo problema cuando uso JSch 0.1.31 y trato de conectarme a un servidor RedHat 5. La actualización a la última versión resolvió el problema.


El problema es con la Versión de jar JSCH que está utilizando.

Actualízalo a la última jarra.

También estaba obteniendo el mismo error y esta solución funcionó.

Puede descargar el último jar de

http://www.jcraft.com/jsch/


FWIW, tuve este mismo mensaje de error en JSch 0.1.50. La actualización a 0.1.52 resolvió el problema.


Finalmente una solución que funciona sin tener que realizar ningún cambio en el servidor:

  1. Descargue la última jsch.jar como sugiere Yvan: http://sourceforge.net/projects/jsch/files/jsch.jar/ jsch-0.1.52.jar funciona bien

  2. Coloque el archivo descargado en su "... / JetBrains / PhpStorm 8.0.1 / lib", y elimine el archivo jsch existente (para PHPStorm 8 es jsch-0.1.50.jar)

  3. Reinicie PHPStorm y debería funcionar

Usa la misma solución para Webstorm


Hay un par de lugares donde los clientes y servidores de SSH intentan y acuerdan una implementación común. Dos que conozco son cifrado y compresión. El servidor y el cliente producen una lista de opciones disponibles y luego se elige la mejor opción disponible en ambas listas.

Si no hay una opción aceptable en las listas, falla con el error que recibió. Supongo que desde la salida de depuración aquí, pero parece que las únicas opciones de servidor para el cifrado son "aes256-cbc hmac-md5 none".

JSch no hace hmac-md5 y aes256-cbc está deshabilitado debido a sus archivos de políticas de Java. Dos cosas que podrías probar son ...

  1. Para aumentar las bibliotecas de encriptación disponibles en el servidor, instale archivos de políticas sin restricciones en su cliente, habilitando aes256-cbc (asegúrese de que el mensaje que dice que está desactivado desaparezca, esos archivos de políticas son notoriamente fáciles de instalar en la JVM incorrecta) del Sol. Sitio de descarga de Java 6 ,
  2. o intente y deshabilite el cifrado.

El primero es ideal si tiene acceso al servidor (créame, aes128-cbc es un montón de cifrado), pero el segundo es fácil de probar rápidamente la teoría.


Los pasos completos para agregar los algoritmos al servidor RECEPCIÓN (al que se está conectando). Supongo que este es un servidor Linux.

sudo /etc/ssh/sshd_config

Agregue esto al archivo (puede estar al final):

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

Luego reinicie el servidor SSH:

sudo service sshd restart


Tuve el mismo problema, ejecutar Netbeans 8.0 en Windows y JRE 1.7.

Acabo de instalar JRE 1.8 desde https://www.java.com/fr/download/ (tenga en cuenta que se llama Version 8 pero es la versión 1.8 cuando lo instala), y lo arregló.