• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

109
Views
Restablecimiento de la conexión cuando se usa jsch para conectarse a un servidor sftp alojado en azure

actualmente estamos trabajando con un producto en la nube que usa JSCH internamente para conectarse a fuentes sftp externas. Estoy investigando una excepción de restablecimiento de conexión que recibimos al intentar conectarnos a Azure SFTP.

Usando wireshark, determiné que el problema ocurre después de que enviamos el Cliente: Key Exchange Init. Estableciendo la misma conexión con filezilla no tenemos este problema.

al comparar los paquetes de jsch y filezilla no vi un problema obvio, pero no soy un experto en el protocolo ssh. voy a publicar ambas solicitudes a continuación si alguien pudiera darme algún consejo, sería muy apreciado.

Solicitud con JSCH (no funciona)

Solicitud con Filezilla (funcionando)

Respuesta con Filezilla (funcionando)

Vea a continuación la salida del registro:

 INFO: Connecting to ***** port 22 INFO: Connection established INFO: Remote version string: SSH-2.0-AzureSSH_1.0.0 INFO: Local version string: SSH-2.0-JSCH-0.1.54 INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256 INFO: CheckKexes: diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521 INFO: CheckSignatures: ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521 INFO: SSH_MSG_KEXINIT sent INFO: Disconnecting from **** port 22 com.jcraft.jsch.JSchException: Session.connect: java.net.SocketException: Connection reset

EDITAR: siguiendo la sugerencia de Jameses, obtuve el mismo resultado, la conexión se cerró pero la solicitud del cliente solo tenía los algoritmos admitidos como carga útil. Así que traté de replicar la solicitud de FileZilla configurando la configuración de jsch independientemente de si jsch realmente admite el algoritmo, solo quería ver si hay alguna respuesta.

Pero por alguna razón, la conexión aún se termina.

Solicitud jsch modificada

over 3 years ago · Santiago Trujillo
3 answers
Answer question

0

quería publicar una actualización rápida para cualquier persona que tenga el mismo problema, abrí una pregunta similar en el sitio de preguntas y respuestas de microsoft y parece que es un problema en el lado azul en el que están trabajando para solucionarlo para GA Preguntas y respuestas de Microsoft

over 3 years ago · Santiago Trujillo Report

0

Gracias al último comentario (de JGiltner62-0227 el 2022-02-18) en https://docs.microsoft.com/en-us/answers/questions/713024/connection-to-azure-sftp-doesnt-work- usando-jsch.html Ahora tengo una implementación de JSCH en funcionamiento. Hay dos cosas que deben cambiarse en el código fuente, ambas en Session.java.

  1. Línea 71:

private byte[] V_C=Util.str2byte("SSH-2.0-JSCH-"+JSch.VERSION); // client version

necesita cambiar a:

private byte[] V_C=Util.str2byte("SSH-2.0-JSCH_"+JSch.VERSION); // client version

(La diferencia es un guión bajo en lugar de un guión después de 'JSCH').

  1. Línea 253:

byte[] foo=new byte[V_C.length+1];

System.arraycopy(V_C, 0, foo, 0, V_C.length);

foo[foo.length-1]=(byte)'\n';

necesita cambiar a

byte[] foo=new byte[V_C.length+2];

System.arraycopy(V_C, 0, foo, 0, V_C.length);

foo[foo.length-2]=(byte)0x0D;

foo[foo.length-1]=(byte)'\n';

(La variable 'foo' debe ser V_C.length + 2 en lugar de +1, y luego insertamos 0x0D como el penúltimo byte).

Después de realizar estos dos cambios, confirmé que la biblioteca funciona cargando a Azure SFTP.

over 3 years ago · Santiago Trujillo Report

0

Desde SSH RFC :

 When the connection has been established, both sides MUST send an identification string. This identification string MUST be SSH-protoversion-softwareversion SP comments CR LF Both the 'protoversion' and 'softwareversion' strings MUST consist of printable US-ASCII characters, with the exception of whitespace characters and the minus sign (-). The 'softwareversion' string is primarily used to trigger compatibility extensions and to indicate the capabilities of an implementation. The 'comments' string SHOULD contain additional information that might be useful in solving user problems. As such, an example of a valid identification string is SSH-2.0-billsSSH_3.6.3q3<CR><LF>

Parece que esta biblioteca (y ssh-keyscan) viola la especificación debido al "-" en el segmento de versión de software: JSCH-0.1.54

Como señala Fabian, la "solución" estará disponible antes de SFTP GA.

over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error