Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
jsch — fork of the popular jsch library | Kitploit
Outils/GitHubGitHub/mwiede/jsch
Authentication & AuthorizationEncryption/Decryption ToolsNetwork SecurityUtilities & FrameworksRemote Access Tool
GitHubmwiede/jsch

jsch

fork of the popular jsch library

Voir le dépôt
1.1k188il y a 8 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Fork de JSch-0.1.55

Voir le README original

GitHub release Maven Central Java CI with Maven

Pourquoi devriez-vous utiliser cette bibliothèque ?

Comme je l'ai expliqué dans un article de blog, les principaux points sont :

  • OpenSSH a désactivé ssh-rsa par défaut dans la version 8.8 et vous avez besoin d'une bibliothèque qui prend en charge rsa-sha2-256 et rsa-sha2-512.
  • Remplacement direct : il suffit de changer les coordonnées de la dépendance et vous êtes prêt.
  • Plus de maintenance active de JSch sur SourceForge.
  • Rester en phase avec les fonctionnalités d'OpenJDK afin qu'aucune dépendance supplémentaire ne soit nécessaire.

Y a-t-il une documentation ?

Pas beaucoup. Consultez le code d'exemple dans le dossier examples. Et il existe quelques pages wiki, par exemple Jsch-Configuration et Jsch-Logging.

Gestion des versions

Jusqu'à 0.2.26, la gestion des versions suivait le schéma du jsch d'origine ; à partir de 2.27.0, nous sommes passés au versionnement sémantique, indiquant que l'API de la bibliothèque est stable et utilisée en production.

Comment utiliser cette bibliothèque en remplacement de com.jcraft:jsch

Assurez-vous de n'avoir qu'une seule dépendance jsch sur votre classpath. Par exemple, vous pouvez vérifier la sortie de mvn dependency:tree.

en remplaçant une dépendance Maven directe

remplacez

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

par

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

en remplaçant jsch comme dépendance Maven transitive

Lorsque vous avez un artefact foo:bar, qui contient com.jcraft:jsch comme dépendance transitive, vous devez ajouter com.github.mwiede:jsch comme autre dépendance et exclure celle 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>

Ajout : Vous pouvez également exclure com.jcraft:jsch.agentproxy.jsch, com.jcraft:jsch.agentproxy.core ou com.jcraft:jsch.agentproxy.pageant, car ces modules ont été intégrés dans ce fork (voir les notes de version de 0.1.66).

FAQ

Quelle est la version minimale de Java requise ?

  • Java 8. Pour plus de limitations, voir la réponse suivante.

Est-ce que ssh-ed25519, ssh-ed448, curve25519-sha256, curve448-sha512 et chacha20-poly1305@openssh.com sont pris en charge ?

  • Cette bibliothèque est un Multi-Release-jar, ce qui signifie que vous ne pouvez utiliser certaines fonctionnalités que lorsqu'une version plus récente de Java est utilisée.
    • Pour utiliser ssh-ed25519 et ssh-ed448, vous devez utiliser au moins Java 15 ou ajouter Bouncy Castle (bcprov-jdk18on) au classpath.
    • Pour utiliser curve25519-sha256 et curve448-sha512, vous devez utiliser au moins Java 11 ou ajouter Bouncy Castle (bcprov-jdk18on) au classpath.
    • Pour utiliser chacha20-poly1305@openssh.com, vous devez ajouter Bouncy Castle (bcprov-jdk18on) au classpath.
  • Depuis la version 0.1.66, ces algorithmes peuvent désormais être utilisés avec d'anciennes versions de Java si Bouncy Castle (bcprov-jdk18on) est ajouté au classpath.
    • Depuis la version 0.1.72, chacha20-poly1305@openssh.com ne peut être utilisé que si Bouncy Castle (bcprov-jdk18on) est ajouté au classpath.

Pourquoi les clés de type ssh-rsa ne fonctionnent-elles pas avec ce fork de JSch et mon serveur ?

  • Depuis la version 0.2.0, l'algorithme de signature RSA/SHA1 est désactivé par défaut.
    • SHA1 n'est plus considéré comme sûr par la communauté cryptographique en général, et ce fork de JSch s'efforce de maintenir des choix sûrs pour les algorithmes par défaut qu'il utilisera.
    • Cela suit également l'exemple du projet OpenSSH, qui a désactivé les signatures RSA/SHA1 par défaut à partir de la version 8.8 d'OpenSSH.
  • Les clés de type ssh-rsa continuent de fonctionner par défaut avec les algorithmes de signature RSA/SHA256 (rsa-sha2-256) et RSA/SHA512 (rsa-sha2-512) définis par le RFC 8332.
  • Si votre serveur ne prend en charge que les signatures RSA/SHA1 et que vous avez besoin de les utiliser dans votre application, vous devrez les réactiver manuellement par l'un des moyens suivants (voir aussi la page wiki Jsch-Configuration) :
    • Globalement, en ajoutant "ssh-rsa" aux propriétés jsch.server_host_key + jsch.client_pubkey.
    • Globalement, en exécutant quelque chose comme JSch.setConfig("server_host_key", JSch.getConfig("server_host_key") + ",ssh-rsa") + JSch.setConfig("PubkeyAcceptedAlgorithms", JSch.getConfig("PubkeyAcceptedAlgorithms") + ",ssh-rsa").
    • Par session, en exécutant quelque chose comme session.setConfig("server_host_key", session.getConfig("server_host_key") + ",ssh-rsa") + session.setConfig("PubkeyAcceptedAlgorithms", session.getConfig("PubkeyAcceptedAlgorithms") + ",ssh-rsa").

Ce fork est-il compatible à 100 % avec le JSch d'origine, car la connexion à mon serveur ne fonctionne plus !

  • Pour la compatibilité avec OpenSSH et une sécurité améliorée, l'ordre des algorithmes cryptographiques a été modifié. Si vous souhaitez toujours utiliser des algorithmes plus anciens ou obsolètes, vous devez modifier la configuration. Voir les exemples #37, #40
  • Pour faciliter l'ajustement des algorithmes cryptographiques, à partir de 0.1.65, les propriétés système suivantes peuvent être définies au démarrage de votre application :
    • jsch.kex
      • analogue à JSch.setConfig("kex", "...")
    • jsch.server_host_key
      • analogue à JSch.setConfig("server_host_key", "...")
    • jsch.prefer_known_host_key_types
      • analogue à JSch.setConfig("prefer_known_host_key_types", "...")
    • jsch.enable_server_sig_algs
      • analogue à JSch.setConfig("enable_server_sig_algs", "...")
    • jsch.cipher

Autres projets utilisant JSch

  • Jsync https://github.com/fizzed/jsync - Fournit un outil de synchronisation de fichiers et de répertoires simple, efficace, fiable et 100 % Java, de type rsync, qui peut être utilisé par programmation.
  • Blaze https://github.com/fizzed/blaze - Un moyen d'exécuter des fichiers Java comme des scripts, avec de puissantes fonctionnalités SSH, SFTP et de type rsync intégrées directement.

Changements depuis le fork :

Voir ChangeLog.md

Télécharger l’outil
  • En ajoutant "ssh-rsa" à votre fichier de configuration de type OpenSSH avec les mots-clés "HostKeyAlgorithms" + "PubkeyAcceptedAlgorithms", puis en utilisant la classe OpenSSHConfig.
    • analogue à JSch.setConfig("cipher.s2c", "...") + JSch.setConfig("cipher.c2s", "...")
  • jsch.mac
    • analogue à JSch.setConfig("mac.s2c", "...") + JSch.setConfig("mac.c2s", "...")
  • jsch.compression
    • analogue à JSch.setConfig("compression.s2c", "...") + JSch.setConfig("compression.c2s", "...")
  • jsch.lang
    • analogue à JSch.setConfig("lang.s2c", "...") + JSch.setConfig("lang.c2s", "...")
  • jsch.dhgex_min
    • analogue à JSch.setConfig("dhgex_min", "...")
  • jsch.dhgex_max
    • analogue à JSch.setConfig("dhgex_max", "...")
  • jsch.dhgex_preferred
    • analogue à JSch.setConfig("dhgex_preferred", "...")
  • jsch.compression_level
    • analogue à JSch.setConfig("compression_level", "...")
  • jsch.preferred_authentications
    • analogue à JSch.setConfig("PreferredAuthentications", "...")
  • jsch.client_pubkey
    • analogue à JSch.setConfig("PubkeyAcceptedAlgorithms", "...")
  • jsch.check_ciphers
    • analogue à JSch.setConfig("CheckCiphers", "...")
  • jsch.check_macs
    • analogue à JSch.setConfig("CheckMacs", "...")
  • jsch.check_kexes
    • analogue à JSch.setConfig("CheckKexes", "...")
  • jsch.check_signatures
    • analogue à JSch.setConfig("CheckSignatures", "...")
  • jsch.fingerprint_hash
    • analogue à JSch.setConfig("FingerprintHash", "...")
  • jsch.max_auth_tries
    • analogue à JSch.setConfig("MaxAuthTries", "...")