Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
jsch — fork of the popular jsch library | Kitploit
Tools/GitHubGitHub/mwiede/jsch
Authentication & AuthorizationEncryption/Decryption ToolsNetwork SecurityUtilities & FrameworksRemote Access Tool
GitHubmwiede/jsch

jsch

fork of the popular jsch library

Repository anzeigen
1.1k188vor 8 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Fork von JSch-0.1.55

Siehe ursprüngliche README

GitHub release Maven Central Java CI with Maven

Warum sollten Sie diese Bibliothek verwenden?

Wie ich in einem Blogbeitrag erklärt habe, sind die Hauptpunkte:

  • OpenSSH hat ssh-rsa in Version 8.8 standardmäßig deaktiviert, und Sie benötigen eine Bibliothek, die rsa-sha2-256 und rsa-sha2-512 unterstützt.
  • Drop-in-Ersatz: Ändern Sie einfach die Abhängigkeitskoordinaten und schon können Sie loslegen.
  • Keine aktive Wartung von JSch auf SourceForge.
  • Bleiben Sie mit den OpenJDK-Funktionen synchron, sodass keine zusätzlichen Abhängigkeiten erforderlich sind.

Gibt es eine Dokumentation?

Nicht viel. Schauen Sie sich den Beispielcode im Ordner examples an. Und es gibt einige Wiki-Seiten, z. B. Jsch-Configuration und Jsch-Logging.

Versionsverwaltung

Bis 0.2.26 folgte die Versionsverwaltung dem ursprünglichen jsch-Schema; ab 2.27.0 sind wir auf Semantic Versioning umgestiegen, um auszudrücken, dass die Bibliotheks-API stabil ist und in der Produktion verwendet wird.

Wie verwende ich diese Bibliothek als Ersatz für com.jcraft:jsch?

Stellen Sie sicher, dass Sie nur eine jsch-Abhängigkeit in Ihrem Klassenpfad haben. Sie können beispielsweise die Ausgabe von mvn dependency:tree überprüfen.

Durch Ersetzen einer direkten Maven-Abhängigkeit

ersetzen Sie

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

durch

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

Durch Ersetzen von jsch als transitiver Maven-Abhängigkeit

Wenn Sie ein Artefakt foo:bar haben, das com.jcraft:jsch als transitive Abhängigkeit enthält, müssen Sie com.github.mwiede:jsch als weitere Abhängigkeit hinzufügen und die jcraft-Abhängigkeit ausschließen:

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>

Hinweis: Sie können außerdem jede der Abhängigkeiten com.jcraft:jsch.agentproxy.jsch, com.jcraft:jsch.agentproxy.core oder com.jcraft:jsch.agentproxy.pageant ausschließen, da diese Module in diesen Fork integriert wurden (siehe Versionshinweise zu 0.1.66).

FAQ

Welche minimale Java-Version ist erforderlich?

  • Java 8. Weitere Einschränkungen finden Sie in der nächsten Antwort.

Werden ssh-ed25519, ssh-ed448, curve25519-sha256, curve448-sha512 & chacha20-poly1305@openssh.com unterstützt?

  • Diese Bibliothek ist ein Multi-Release-JAR, was bedeutet, dass Sie bestimmte Funktionen nur nutzen können, wenn eine neuere Java-Version verwendet wird.
    • Um ssh-ed25519 & ssh-ed448 zu verwenden, müssen Sie mindestens Java 15 verwenden oder Bouncy Castle (bcprov-jdk18on) zum Klassenpfad hinzufügen.
    • Um curve25519-sha256 & curve448-sha512 zu verwenden, müssen Sie mindestens Java 11 verwenden oder Bouncy Castle (bcprov-jdk18on) zum Klassenpfad hinzufügen.
    • Um chacha20-poly1305@openssh.com zu verwenden, müssen Sie Bouncy Castle (bcprov-jdk18on) zum Klassenpfad hinzufügen.
  • Seit dem Release 0.1.66 können diese Algorithmen nun mit älteren Java-Versionen verwendet werden, wenn Bouncy Castle (bcprov-jdk18on) zum Klassenpfad hinzugefügt wird.
    • Seit dem Release 0.1.72 kann chacha20-poly1305@openssh.com nur verwendet werden, wenn Bouncy Castle (bcprov-jdk18on) zum Klassenpfad hinzugefügt wird.

Warum funktionieren Schlüssel vom Typ ssh-rsa nicht mit diesem JSch-Fork und meinem Server?

  • Seit dem Release 0.2.0 ist der RSA/SHA1-Signaturalgorithmus standardmäßig deaktiviert.
    • SHA1 wird von der allgemeinen Kryptographie-Gemeinschaft nicht mehr als sicher angesehen, und dieser JSch-Fork bemüht sich, sichere Standardalgorithmen beizubehalten, die er verwendet.
    • Dies folgt auch dem Vorbild des OpenSSH-Projekts, das RSA/SHA1-Signaturen ab OpenSSH-Version 8.8 standardmäßig deaktiviert hat.
  • Schlüssel vom Typ ssh-rsa funktionieren weiterhin standardmäßig mit den RSA/SHA256- (rsa-sha2-256) und RSA/SHA512- (rsa-sha2-512) Signaturalgorithmen, die in RFC 8332 definiert sind.
  • Wenn Ihr Server nur RSA/SHA1-Signaturen unterstützt und Sie deren Verwendung in Ihrer Anwendung benötigen, müssen Sie sie manuell auf eine der folgenden Arten wieder aktivieren (siehe auch die Wiki-Seite Jsch-Configuration):
    • Global, indem Sie "ssh-rsa" zu den Eigenschaften jsch.server_host_key + jsch.client_pubkey hinzufügen.
    • Global, indem Sie etwas Ähnliches wie JSch.setConfig("server_host_key", JSch.getConfig("server_host_key") + ",ssh-rsa") + JSch.setConfig("PubkeyAcceptedAlgorithms", JSch.getConfig("PubkeyAcceptedAlgorithms") + ",ssh-rsa") ausführen.
    • Pro Sitzung, indem Sie etwas Ähnliches wie session.setConfig("server_host_key", session.getConfig("server_host_key") + ",ssh-rsa") + session.setConfig("PubkeyAcceptedAlgorithms", session.getConfig("PubkeyAcceptedAlgorithms") + ",ssh-rsa") ausführen.

Ist dieser Fork 100% kompatibel mit dem ursprünglichen JSch, weil die Verbindung zu meinem Server nicht mehr funktioniert?

  • Aus Kompatibilitätsgründen mit OpenSSH und für verbesserte Sicherheit wurde die Reihenfolge der Krypto-Algorithmen geändert. Wenn Sie weiterhin ältere oder veraltete Algorithmen verwenden möchten, müssen Sie die Konfiguration ändern. Beispiele siehe #37, #40
  • Um die Anpassung der Krypto-Algorithmen zu erleichtern, können ab 0.1.65 die folgenden Systemeigenschaften beim Start Ihrer Anwendung gesetzt werden:
    • jsch.kex
      • analog zu JSch.setConfig("kex", "...")
    • jsch.server_host_key
      • analog zu JSch.setConfig("server_host_key", "...")
    • jsch.prefer_known_host_key_types
      • analog zu JSch.setConfig("prefer_known_host_key_types", "...")
    • jsch.enable_server_sig_algs
      • analog zu JSch.setConfig("enable_server_sig_algs", "...")
    • jsch.cipher

Andere Projekte, die JSch verwenden

  • Jsync https://github.com/fizzed/jsync - Bietet ein einfaches, effizientes, zuverlässiges und reines Java-rsync-ähnliches Werkzeug zur Datei- und Verzeichnissynchronisierung, das programmatisch verwendet werden kann.
  • Blaze https://github.com/fizzed/blaze - Eine Möglichkeit, Java-Dateien als Skripte auszuführen, mit leistungsstarken SSH-, SFTP- und rsync-ähnlichen Funktionen direkt integriert.

Änderungen seit dem Fork:

Siehe ChangeLog.md

Tool herunterladen
  • Fügen Sie "ssh-rsa" mit den Schlüsselwörtern "HostKeyAlgorithms" + "PubkeyAcceptedAlgorithms" zu Ihrer OpenSSH-Konfigurationsdatei hinzu und verwenden Sie anschließend die Klasse OpenSSHConfig.
    • analog zu JSch.setConfig("cipher.s2c", "...") + JSch.setConfig("cipher.c2s", "...")
  • jsch.mac
    • analog zu JSch.setConfig("mac.s2c", "...") + JSch.setConfig("mac.c2s", "...")
  • jsch.compression
    • analog zu JSch.setConfig("compression.s2c", "...") + JSch.setConfig("compression.c2s", "...")
  • jsch.lang
    • analog zu JSch.setConfig("lang.s2c", "...") + JSch.setConfig("lang.c2s", "...")
  • jsch.dhgex_min
    • analog zu JSch.setConfig("dhgex_min", "...")
  • jsch.dhgex_max
    • analog zu JSch.setConfig("dhgex_max", "...")
  • jsch.dhgex_preferred
    • analog zu JSch.setConfig("dhgex_preferred", "...")
  • jsch.compression_level
    • analog zu JSch.setConfig("compression_level", "...")
  • jsch.preferred_authentications
    • analog zu JSch.setConfig("PreferredAuthentications", "...")
  • jsch.client_pubkey
    • analog zu JSch.setConfig("PubkeyAcceptedAlgorithms", "...")
  • jsch.check_ciphers
    • analog zu JSch.setConfig("CheckCiphers", "...")
  • jsch.check_macs
    • analog zu JSch.setConfig("CheckMacs", "...")
  • jsch.check_kexes
    • analog zu JSch.setConfig("CheckKexes", "...")
  • jsch.check_signatures
    • analog zu JSch.setConfig("CheckSignatures", "...")
  • jsch.fingerprint_hash
    • analog zu JSch.setConfig("FingerprintHash", "...")
  • jsch.max_auth_tries
    • analog zu JSch.setConfig("MaxAuthTries", "...")