Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
jsch — fork de la popular biblioteca jsch | Kitploit
Herramientas/GitHubGitHub/mwiede/jsch
Autenticación y AutorizaciónHerramientas de Cifrado/DescifradoSeguridad de RedesUtilidades y FrameworksHerramienta de Acceso Remoto
GitHubmwiede/jsch

jsch

fork de la popular biblioteca jsch

Ver Repositorio
1.1k188hace 8 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Fork de JSch-0.1.55

Ver el README original

GitHub release Maven Central Java CI with Maven

¿Por qué deberías usar esta librería?

Como expliqué en un artículo de blog, los puntos principales son:

  • OpenSSH ha deshabilitado ssh-rsa en la versión 8.8 por defecto y necesitas una librería que admita rsa-sha2-256 y rsa-sha2-512.
  • Reemplazo directo: solo cambia las coordenadas de dependencia y ya estás listo.
  • No hay mantenimiento activo de JSch en SourceForge.
  • Se mantiene al día con las características de OpenJDK, por lo que no se necesitan dependencias adicionales.

¿Hay documentación?

No mucha. Revisa el código de ejemplo en la carpeta examples. Y hay algunas páginas wiki, es decir, Jsch-Configuration y Jsch-Logging.

Versionado

Hasta 0.2.26, el versionado seguía el esquema original de jsch; a partir de 2.27.0, cambiamos al versionado semántico, lo que expresa que la API de la librería es estable y se usa en producción.

Cómo usar esta librería como reemplazo de com.jcraft:jsch

Asegúrate de tener solo una dependencia de jsch en tu classpath. Por ejemplo, puedes comprobar la salida de mvn dependency:tree.

reemplazando una dependencia directa de Maven

reemplaza

root@kitploit:~
<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.55</version>
</dependency>

con

root@kitploit:~
<dependency>
  <groupId>com.github.mwiede</groupId>
  <artifactId>jsch</artifactId>
  <version>2.28.0</version>
</dependency>

reemplazando jsch como dependencia transitiva de Maven

Cuando tienes un artefacto foo:bar, que contiene com.jcraft:jsch como dependencia transitiva, necesitas añadir com.github.mwiede:jsch como otra dependencia y excluir la de jcraft:

root@kitploit:~
<dependency>
  <groupId>com.github.mwiede</groupId>
  <artifactId>jsch</artifactId>
  <version>2.28.0</version>
</dependency>
<dependency>
  <groupId>foo</groupId>
  <artifactId>bar</artifactId>
  <exclusions>
        <exclusion>  
          <groupId>com.jcraft</groupId>
          <artifactId>jsch</artifactId>
        </exclusion>
      </exclusions> 
</dependency>

Adición: También puedes excluir cualquiera de com.jcraft:jsch.agentproxy.jsch, com.jcraft:jsch.agentproxy.core o com.jcraft:jsch.agentproxy.pageant, porque estos módulos se integraron en este fork (consulta las notas de la versión 0.1.66).

Preguntas frecuentes

¿Cuál es la versión mínima de Java requerida?

  • Java 8. Para más limitaciones, consulta la siguiente respuesta.

¿Se admiten ssh-ed25519, ssh-ed448, curve25519-sha256, curve448-sha512 y chacha20-poly1305@openssh.com?

  • Esta librería es un Multi-Release-jar, lo que significa que solo puedes usar ciertas funciones cuando se utiliza una versión más reciente de Java.
    • Para usar ssh-ed25519 y ssh-ed448, debes utilizar al menos Java 15 o añadir Bouncy Castle (bcprov-jdk18on) al classpath.
    • Para usar curve25519-sha256 y curve448-sha512, debes utilizar al menos Java 11 o añadir Bouncy Castle (bcprov-jdk18on) al classpath.
    • Para usar chacha20-poly1305@openssh.com, debes añadir Bouncy Castle (bcprov-jdk18on) al classpath.
  • A partir de la versión 0.1.66, estos algoritmos ahora se pueden usar con versiones anteriores de Java si se añade Bouncy Castle (bcprov-jdk18on) al classpath.
    • A partir de la versión 0.1.72, chacha20-poly1305@openssh.com solo se puede usar si se añade Bouncy Castle (bcprov-jdk18on) al classpath.

¿Por qué las claves de tipo ssh-rsa no funcionan con este fork de JSch y mi servidor?

  • A partir de la versión 0.2.0, el algoritmo de firma RSA/SHA1 está deshabilitado por defecto.
    • SHA1 ya no se considera seguro por parte de la comunidad criptográfica general, y este fork de JSch se esfuerza por mantener opciones seguras para los algoritmos predeterminados que utilizará.
    • Esto también sigue el ejemplo del proyecto OpenSSH, que deshabilitó las firmas RSA/SHA1 por defecto a partir de la versión 8.8 de OpenSSH.
  • Las claves de tipo ssh-rsa siguen funcionando por defecto con los algoritmos de firma RSA/SHA256 (rsa-sha2-256) y RSA/SHA512 (rsa-sha2-512) definidos por RFC 8332.
  • Si tu servidor solo admite firmas RSA/SHA1 y necesitas usarlas en tu aplicación, tendrás que volver a habilitarlas manualmente mediante uno de los siguientes medios (consulta también la página wiki Jsch-Configuration):
    • Globalmente, añadiendo "ssh-rsa" a las propiedades jsch.server_host_key + jsch.client_pubkey.
    • Globalmente, ejecutando algo similar a JSch.setConfig("server_host_key", JSch.getConfig("server_host_key") + ",ssh-rsa") + JSch.setConfig("PubkeyAcceptedAlgorithms", JSch.getConfig("PubkeyAcceptedAlgorithms") + ",ssh-rsa").
    • Por sesión, ejecutando algo similar a session.setConfig("server_host_key", session.getConfig("server_host_key") + ",ssh-rsa") + session.setConfig("PubkeyAcceptedAlgorithms", session.getConfig("PubkeyAcceptedAlgorithms") + ",ssh-rsa").

¿Es este fork 100% compatible con el JSch original? ¡Porque la conexión a mi servidor ya no funciona!

  • Para la compatibilidad con OpenSSH y una mayor seguridad, se cambió el orden de los algoritmos criptográficos. Si aún quieres usar algoritmos más antiguos u obsoletos, necesitas cambiar la configuración. Ejemplos: ver #37, #40
  • Para que sea más fácil ajustar los algoritmos criptográficos, a partir de 0.1.65 se pueden establecer las siguientes propiedades del sistema al iniciar tu aplicación:
    • jsch.kex
      • análogo a JSch.setConfig("kex", "...")
    • jsch.server_host_key
      • análogo a JSch.setConfig("server_host_key", "...")
    • jsch.prefer_known_host_key_types
      • análogo a JSch.setConfig("prefer_known_host_key_types", "...")
    • jsch.enable_server_sig_algs
      • análogo a JSch.setConfig("enable_server_sig_algs", "...")
    • jsch.cipher

Otros proyectos que usan JSch

  • Jsync https://github.com/fizzed/jsync - Proporciona una herramienta de sincronización de archivos y directorios simple, eficiente, confiable y en Java puro, similar a rsync, que puede usarse programáticamente.
  • Blaze https://github.com/fizzed/blaze - Una forma de ejecutar archivos Java como scripts, con potentes funciones SSH, SFTP y similares a rsync integradas.

Cambios desde el fork:

Consulta ChangeLog.md

Descargar herramienta
  • Añadiendo "ssh-rsa" a tu archivo de configuración de tipo OpenSSH con las palabras clave "HostKeyAlgorithms" + "PubkeyAcceptedAlgorithms" y luego utilizando la clase OpenSSHConfig.
    • análogo a JSch.setConfig("cipher.s2c", "...") + JSch.setConfig("cipher.c2s", "...")
  • jsch.mac
    • análogo a JSch.setConfig("mac.s2c", "...") + JSch.setConfig("mac.c2s", "...")
  • jsch.compression
    • análogo a JSch.setConfig("compression.s2c", "...") + JSch.setConfig("compression.c2s", "...")
  • jsch.lang
    • análogo a JSch.setConfig("lang.s2c", "...") + JSch.setConfig("lang.c2s", "...")
  • jsch.dhgex_min
    • análogo a JSch.setConfig("dhgex_min", "...")
  • jsch.dhgex_max
    • análogo a JSch.setConfig("dhgex_max", "...")
  • jsch.dhgex_preferred
    • análogo a JSch.setConfig("dhgex_preferred", "...")
  • jsch.compression_level
    • análogo a JSch.setConfig("compression_level", "...")
  • jsch.preferred_authentications
    • análogo a JSch.setConfig("PreferredAuthentications", "...")
  • jsch.client_pubkey
    • análogo a JSch.setConfig("PubkeyAcceptedAlgorithms", "...")
  • jsch.check_ciphers
    • análogo a JSch.setConfig("CheckCiphers", "...")
  • jsch.check_macs
    • análogo a JSch.setConfig("CheckMacs", "...")
  • jsch.check_kexes
    • análogo a JSch.setConfig("CheckKexes", "...")
  • jsch.check_signatures
    • análogo a JSch.setConfig("CheckSignatures", "...")
  • jsch.fingerprint_hash
    • análogo a JSch.setConfig("FingerprintHash", "...")
  • jsch.max_auth_tries
    • análogo a JSch.setConfig("MaxAuthTries", "...")