Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
jsch — fork of the popular jsch library | Kitploit
Инструменты/GitHubGitHub/mwiede/jsch
Authentication & AuthorizationEncryption/Decryption ToolsNetwork SecurityUtilities & FrameworksRemote Access Tool
GitHubmwiede/jsch

jsch

fork of the popular jsch library

Репозиторий
1.1k1888 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Форк JSch-0.1.55

См. оригинальный README

GitHub release Maven Central Java CI with Maven

Почему стоит использовать эту библиотеку?

Как я объяснил в записи в блоге, основные причины таковы:

  • OpenSSH по умолчанию отключил ssh-rsa в релизе 8.8, и вам нужна библиотека, поддерживающая rsa-sha2-256 и rsa-sha2-512.
  • Замена без изменений кода: просто поменяйте координаты зависимости — и всё готово.
  • JSch на SourceForge больше активно не поддерживается.
  • Остаётся в синхронизации с возможностями OpenJDK, поэтому нет необходимости в дополнительных зависимостях.

Есть ли какая-либо документация?

Немного. Посмотрите примеры кода в папке examples. Также есть несколько вики-страниц, например Jsch-Configuration и Jsch-Logging.

Версионирование

Вплоть до 0.2.26 версионирование следовало оригинальной схеме jsch; начиная с 2.27.0 мы перешли на семантическое версионирование, что говорит о стабильности API библиотеки и её использовании в продакшене.

Как использовать эту библиотеку в качестве замены com.jcraft:jsch

Убедитесь, что в вашем classpath только одна зависимость jsch. Например, можно проверить вывод mvn dependency:tree.

замена прямой maven-зависимости

замените

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

на

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

замена jsch как транзитивной maven-зависимости

Если у вас есть артефакт foo:bar, содержащий com.jcraft:jsch как транзитивную зависимость, вам нужно добавить com.github.mwiede:jsch как ещё одну зависимость и исключить зависимость 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>

Дополнение: вы также можете исключить любую из зависимостей com.jcraft:jsch.agentproxy.jsch, com.jcraft:jsch.agentproxy.core или com.jcraft:jsch.agentproxy.pageant, поскольку эти модули были интегрированы в этот форк (см. примечания к релизу 0.1.66).

FAQ

Какая минимальная версия Java требуется?

  • Java 8. Дополнительные ограничения — в следующем ответе.

Поддерживаются ли ssh-ed25519, ssh-ed448, curve25519-sha256, curve448-sha512 и chacha20-poly1305@openssh.com?

  • Эта библиотека — Multi-Release-jar, что означает, что некоторые функции доступны только при использовании более новой версии Java.
    • Чтобы использовать ssh-ed25519 и ssh-ed448, нужна версия Java не ниже 15 или добавьте Bouncy Castle (bcprov-jdk18on) в classpath.
    • Чтобы использовать curve25519-sha256 и curve448-sha512, нужна версия Java не ниже 11 или добавьте Bouncy Castle (bcprov-jdk18on) в classpath.
    • Чтобы использовать chacha20-poly1305@openssh.com, необходимо добавить Bouncy Castle (bcprov-jdk18on) в classpath.
  • Начиная с релиза 0.1.66, эти алгоритмы можно использовать и со старыми версиями Java, если в classpath добавлен Bouncy Castle (bcprov-jdk18on).
    • Начиная с релиза 0.1.72, chacha20-poly1305@openssh.com может использоваться только при добавлении Bouncy Castle (bcprov-jdk18on) в classpath.

Почему ключи типа ssh-rsa не работают с этим форком JSch и моим сервером?

  • Начиная с релиза 0.2.0, алгоритм подписи RSA/SHA1 отключён по умолчанию.
    • SHA1 больше не считается безопасным в криптографическом сообществе, и этот форк JSch стремится сохранять безопасный выбор алгоритмов по умолчанию.
    • Это также соответствует подходу проекта OpenSSH, который отключил подписи RSA/SHA1 по умолчанию, начиная с релиза OpenSSH 8.8.
  • Ключи типа ssh-rsa продолжают работать по умолчанию с алгоритмами подписи RSA/SHA256 (rsa-sha2-256) и RSA/SHA512 (rsa-sha2-512), определёнными в RFC 8332.
  • Если ваш сервер поддерживает только подписи RSA/SHA1 и они необходимы вашему приложению, вам придётся вручную включить их одним из следующих способов (также см. вики-страницу Jsch-Configuration):
    • Глобально, добавив "ssh-rsa" в свойства jsch.server_host_key + jsch.client_pubkey.
    • Глобально, выполнив нечто вроде JSch.setConfig("server_host_key", JSch.getConfig("server_host_key") + ",ssh-rsa") + JSch.setConfig("PubkeyAcceptedAlgorithms", JSch.getConfig("PubkeyAcceptedAlgorithms") + ",ssh-rsa").
    • Для конкретной сессии, выполнив нечто вроде session.setConfig("server_host_key", session.getConfig("server_host_key") + ",ssh-rsa") + session.setConfig("PubkeyAcceptedAlgorithms", session.getConfig("PubkeyAcceptedAlgorithms") + ",ssh-rsa").

Совместим ли этот форк на 100% с оригинальным JSch? Просто подключение к моему серверу больше не работает!

  • Для совместимости с OpenSSH и повышения безопасности порядок криптоалгоритмов был изменён. Если вы всё ещё хотите использовать старые или устаревшие алгоритмы, необходимо изменить конфигурацию. Примеры см. в #37, #40
  • Чтобы упростить настройку криптоалгоритмов, начиная с 0.1.65 при запуске вашего приложения можно задать следующие системные свойства:
    • jsch.kex
      • соответствует JSch.setConfig("kex", "...")
    • jsch.server_host_key
      • соответствует JSch.setConfig("server_host_key", "...")
    • jsch.prefer_known_host_key_types
      • соответствует JSch.setConfig("prefer_known_host_key_types", "...")
    • jsch.enable_server_sig_algs
      • соответствует JSch.setConfig("enable_server_sig_algs", "...")
    • jsch.cipher

Другие проекты, использующие JSch

  • Jsync https://github.com/fizzed/jsync — предоставляет простой, эффективный, надёжный и полностью на Java инструмент синхронизации файлов и каталогов в стиле rsync, который можно использовать программно.
  • Blaze https://github.com/fizzed/blaze — способ запускать Java-файлы как скрипты со встроенными мощными возможностями SSH, SFTP и rsync-подобными функциями.

Изменения с момента форка:

См. ChangeLog.md

Скачать инструмент
  • Добавив "ssh-rsa" в ваш конфигурационный файл OpenSSH с ключевыми словами "HostKeyAlgorithms" + "PubkeyAcceptedAlgorithms", а затем используя класс OpenSSHConfig.
    • соответствует JSch.setConfig("cipher.s2c", "...") + JSch.setConfig("cipher.c2s", "...")
  • jsch.mac
    • соответствует JSch.setConfig("mac.s2c", "...") + JSch.setConfig("mac.c2s", "...")
  • jsch.compression
    • соответствует JSch.setConfig("compression.s2c", "...") + JSch.setConfig("compression.c2s", "...")
  • jsch.lang
    • соответствует JSch.setConfig("lang.s2c", "...") + JSch.setConfig("lang.c2s", "...")
  • jsch.dhgex_min
    • соответствует JSch.setConfig("dhgex_min", "...")
  • jsch.dhgex_max
    • соответствует JSch.setConfig("dhgex_max", "...")
  • jsch.dhgex_preferred
    • соответствует JSch.setConfig("dhgex_preferred", "...")
  • jsch.compression_level
    • соответствует JSch.setConfig("compression_level", "...")
  • jsch.preferred_authentications
    • соответствует JSch.setConfig("PreferredAuthentications", "...")
  • jsch.client_pubkey
    • соответствует JSch.setConfig("PubkeyAcceptedAlgorithms", "...")
  • jsch.check_ciphers
    • соответствует JSch.setConfig("CheckCiphers", "...")
  • jsch.check_macs
    • соответствует JSch.setConfig("CheckMacs", "...")
  • jsch.check_kexes
    • соответствует JSch.setConfig("CheckKexes", "...")
  • jsch.check_signatures
    • соответствует JSch.setConfig("CheckSignatures", "...")
  • jsch.fingerprint_hash
    • соответствует JSch.setConfig("FingerprintHash", "...")
  • jsch.max_auth_tries
    • соответствует JSch.setConfig("MaxAuthTries", "...")