Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
jsch — fork of the popular jsch library | Kitploit
Strumenti/GitHubGitHub/mwiede/jsch
Authentication & AuthorizationEncryption/Decryption ToolsNetwork SecurityUtilities & FrameworksRemote Access Tool
GitHubmwiede/jsch

jsch

fork of the popular jsch library

Vedi Repository
1.1k1888 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Fork di JSch-0.1.55

Vedi il README originale

GitHub release Maven Central Java CI with Maven

Perché dovresti usare questa libreria?

Come ho spiegato in un post del blog, i punti principali sono:

  • OpenSSH ha disabilitato ssh-rsa per impostazione predefinita nella release 8.8 e hai bisogno di una libreria che supporti rsa-sha2-256 e rsa-sha2-512.
  • Drop-in replacement: basta cambiare le coordinate della dipendenza e sei a posto.
  • Nessuna manutenzione attiva di JSch su SourceForge.
  • Resta in sincronia con le funzionalità di OpenJDK, così non c'è bisogno di dipendenze aggiuntive.

C'è qualche documentazione?

Non molta. Controlla il codice di esempio nella cartella examples. E ci sono alcune pagine wiki, cioè Jsch-Configuration e Jsch-Logging.

Versionamento

Fino alla 0.2.26 il versionamento seguiva lo schema jsch originale; dalla 2.27.0 in poi siamo passati al semantic versioning, per esprimere che l'API della libreria è stabile e usata in produzione.

Come usare questa libreria come sostituto di com.jcraft:jsch

Assicurati di avere una sola dipendenza jsch nel tuo classpath. Ad esempio, puoi controllare l'output di mvn dependency:tree.

sostituendo una dipendenza maven diretta

sostituisci

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>

sostituendo jsch come dipendenza maven transitiva

Quando hai un artefatto foo:bar, che contiene com.jcraft:jsch come dipendenza transitiva, devi aggiungere com.github.mwiede:jsch come ulteriore dipendenza ed escludere quella 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>

Aggiunta: puoi inoltre escludere uno qualsiasi tra com.jcraft:jsch.agentproxy.jsch, com.jcraft:jsch.agentproxy.core o com.jcraft:jsch.agentproxy.pageant, perché questi moduli sono stati integrati in questo fork (vedi le note di rilascio della 0.1.66).

FAQ

Qual è la versione minima di Java richiesta?

  • Java 8. Per ulteriori limitazioni, vedi la risposta successiva.

Sono supportati ssh-ed25519, ssh-ed448, curve25519-sha256, curve448-sha512 e chacha20-poly1305@openssh.com?

  • Questa libreria è un Multi-Release-jar, il che significa che puoi usare alcune funzionalità solo quando viene utilizzata una versione di Java più recente.
    • Per usare ssh-ed25519 e ssh-ed448, devi utilizzare almeno Java 15 oppure aggiungere Bouncy Castle (bcprov-jdk18on) al classpath.
    • Per usare curve25519-sha256 e curve448-sha512, devi utilizzare almeno Java 11 oppure aggiungere Bouncy Castle (bcprov-jdk18on) al classpath.
    • Per usare chacha20-poly1305@openssh.com, devi aggiungere Bouncy Castle (bcprov-jdk18on) al classpath.
  • A partire dalla release 0.1.66, questi algoritmi possono ora essere usati con versioni di Java meno recenti se Bouncy Castle (bcprov-jdk18on) viene aggiunto al classpath.
    • A partire dalla release 0.1.72, chacha20-poly1305@openssh.com può essere usato solo se Bouncy Castle (bcprov-jdk18on) viene aggiunto al classpath.

Perché le chiavi di tipo ssh-rsa non funzionano con questo fork di JSch e con il mio server?

  • A partire dalla release 0.2.0, l'algoritmo di firma RSA/SHA1 è disabilitato per impostazione predefinita.
    • SHA1 non è più considerato sicuro dalla comunità crittografica generale e questo fork di JSch si impegna a mantenere scelte sicure per gli algoritmi predefiniti che utilizzerà.
    • Questo segue anche l'esempio del progetto OpenSSH, che ha disabilitato le firme RSA/SHA1 per impostazione predefinita a partire dalla release 8.8 di OpenSSH.
  • Le chiavi di tipo ssh-rsa continuano a funzionare per impostazione predefinita con gli algoritmi di firma RSA/SHA256 (rsa-sha2-256) e RSA/SHA512 (rsa-sha2-512) definiti dalla RFC 8332.
  • Se il tuo server supporta solo firme RSA/SHA1 e ne richiedi l'uso nella tua applicazione, dovrai riabilitarle manualmente in uno dei seguenti modi (vedi anche la pagina wiki Jsch-Configuration):
    • Globalmente aggiungendo "ssh-rsa" alle proprietà jsch.server_host_key + jsch.client_pubkey.
    • Globalmente eseguendo qualcosa di simile a JSch.setConfig("server_host_key", JSch.getConfig("server_host_key") + ",ssh-rsa") + JSch.setConfig("PubkeyAcceptedAlgorithms", JSch.getConfig("PubkeyAcceptedAlgorithms") + ",ssh-rsa").
    • Su base per-sessione eseguendo qualcosa di simile a session.setConfig("server_host_key", session.getConfig("server_host_key") + ",ssh-rsa") + session.setConfig("PubkeyAcceptedAlgorithms", session.getConfig("PubkeyAcceptedAlgorithms") + ",ssh-rsa").

Questo fork è compatibile al 100% con il JSch originale, perché la connessione al mio server non funziona più!

  • Per compatibilità con OpenSSH e una sicurezza migliorata, l'ordine degli algoritmi crittografici è stato modificato. Se vuoi ancora usare algoritmi più vecchi o deprecati, devi modificare la configurazione. Esempi: vedi #37, #40
  • Per rendere più semplice la regolazione degli algoritmi crittografici, a partire dalla 0.1.65 è possibile impostare le seguenti proprietà di sistema all'avvio della tua applicazione:
    • jsch.kex
      • analoga a JSch.setConfig("kex", "...")
    • jsch.server_host_key
      • analoga a JSch.setConfig("server_host_key", "...")
    • jsch.prefer_known_host_key_types
      • analoga a JSch.setConfig("prefer_known_host_key_types", "...")
    • jsch.enable_server_sig_algs
      • analoga a JSch.setConfig("enable_server_sig_algs", "...")
    • jsch.cipher

Altri progetti che usano JSch

  • Jsync https://github.com/fizzed/jsync - Fornisce uno strumento semplice, efficiente, affidabile e in puro Java per la sincronizzazione di file e directory, simile a rsync, utilizzabile a livello di programmazione.
  • Blaze https://github.com/fizzed/blaze - Un modo per eseguire file Java come script, con potenti funzionalità SSH, SFTP e simili a rsync integrate direttamente.

Modifiche dal fork:

Vedi ChangeLog.md

Scarica lo strumento
  • Aggiungendo "ssh-rsa" al tuo file di configurazione di tipo OpenSSH con le parole chiave "HostKeyAlgorithms" + "PubkeyAcceptedAlgorithms" e quindi utilizzando la classe OpenSSHConfig.
    • analoga a JSch.setConfig("cipher.s2c", "...") + JSch.setConfig("cipher.c2s", "...")
  • jsch.mac
    • analoga a JSch.setConfig("mac.s2c", "...") + JSch.setConfig("mac.c2s", "...")
  • jsch.compression
    • analoga a JSch.setConfig("compression.s2c", "...") + JSch.setConfig("compression.c2s", "...")
  • jsch.lang
    • analoga a JSch.setConfig("lang.s2c", "...") + JSch.setConfig("lang.c2s", "...")
  • jsch.dhgex_min
    • analoga a JSch.setConfig("dhgex_min", "...")
  • jsch.dhgex_max
    • analoga a JSch.setConfig("dhgex_max", "...")
  • jsch.dhgex_preferred
    • analoga a JSch.setConfig("dhgex_preferred", "...")
  • jsch.compression_level
    • analoga a JSch.setConfig("compression_level", "...")
  • jsch.preferred_authentications
    • analoga a JSch.setConfig("PreferredAuthentications", "...")
  • jsch.client_pubkey
    • analoga a JSch.setConfig("PubkeyAcceptedAlgorithms", "...")
  • jsch.check_ciphers
    • analoga a JSch.setConfig("CheckCiphers", "...")
  • jsch.check_macs
    • analoga a JSch.setConfig("CheckMacs", "...")
  • jsch.check_kexes
    • analoga a JSch.setConfig("CheckKexes", "...")
  • jsch.check_signatures
    • analoga a JSch.setConfig("CheckSignatures", "...")
  • jsch.fingerprint_hash
    • analoga a JSch.setConfig("FingerprintHash", "...")
  • jsch.max_auth_tries
    • analoga a JSch.setConfig("MaxAuthTries", "...")