Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 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.1k18849hace 1h 10mRevisado 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](https://github.com/mwiede/jsch/blob/master/README) original

[![GitHub release](https://img.shields.io/github/v/tag/mwiede/jsch.svg)](https://github.com/mwiede/jsch/releases/latest)
[![Maven Central](https://maven-badges.sml.io/sonatype-central/com.github.mwiede/jsch/badge.svg)](https://maven-badges.sml.io/sonatype-central/com.github.mwiede/jsch)
![Java CI with Maven](https://github.com/mwiede/jsch/workflows/Java%20CI%20with%20Maven/badge.svg)

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

Como expliqué en un [artículo de blog](http://www.matez.de/index.php/2020/06/22/the-future-of-jsch-without-ssh-rsa/), los puntos principales son:
* OpenSSH ha deshabilitado ssh-rsa en la [versión 8.8](https://www.openssh.com/txt/release-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](https://sourceforge.net/projects/jsch/).
* 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](https://github.com/mwiede/jsch/tree/master/examples). Y hay algunas páginas wiki, es decir, [Jsch-Configuration](https://github.com/mwiede/jsch/wiki/Jsch-Configuration) y [Jsch-Logging](https://github.com/mwiede/jsch/wiki/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](https://semver.org), 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
```xml
<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.55</version>
</dependency>
```
con
```xml
<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:
```xml
<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](https://github.com/mwiede/jsch/releases/tag/jsch-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](https://openjdk.org/jeps/238), 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](https://www.bouncycastle.org/java.html) (bcprov-jdk18on) al classpath.
    * Para usar curve25519-sha256 y curve448-sha512, debes utilizar al menos Java 11 o añadir [Bouncy Castle](https://www.bouncycastle.org/java.html) (bcprov-jdk18on) al classpath.
    * Para usar chacha20-poly1305@<!-- -->openssh.com, debes añadir [Bouncy Castle](https://www.bouncycastle.org/java.html) (bcprov-jdk18on) al classpath.
  * A partir de la versión [0.1.66](https://github.com/mwiede/jsch/releases/tag/jsch-0.1.66), estos algoritmos ahora se pueden usar con versiones anteriores de Java si se añade [Bouncy Castle](https://www.bouncycastle.org/java.html) (bcprov-jdk18on) al classpath.
    * A partir de la versión [0.1.72](https://github.com/mwiede/jsch/releases/tag/jsch-0.1.72), chacha20-poly1305@<!-- -->openssh.com solo se puede usar si se añade [Bouncy Castle](https://www.bouncycastle.org/java.html) (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](https://github.com/mwiede/jsch/releases/tag/jsch-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](https://www.openssh.com/txt/release-8.8).
  * 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](https://datatracker.ietf.org/doc/html/rfc8332).
  * 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](https://github.com/mwiede/jsch/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")`.
    * 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`.
### ¿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](https://github.com/mwiede/jsch/issues/37), [#40](https://github.com/mwiede/jsch/issues/40)
  * Para que sea más fácil ajustar los algoritmos criptográficos, a partir de [0.1.65](https://github.com/mwiede/jsch/releases/tag/jsch-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`
      * 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", "...")`

## 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](https://github.com/mwiede/jsch/blob/master/ChangeLog.md)
Descargar herramienta