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.1k1887天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

JSch-0.1.55 的分叉

参见原始 README

GitHub release Maven Central Java CI with Maven

为什么要使用这个库?

正如我在博客文章中所解释的,主要要点如下:

  • OpenSSH 已在8.8 版本中默认禁用 ssh-rsa,你需要一个支持 rsa-sha2-256 和 rsa-sha2-512 的库。
  • 直接替换:只需更改依赖坐标即可,无需其他操作。
  • SourceForge 上的 JSch 没有积极的维护。
  • 与 OpenJDK 功能保持同步,因此无需额外依赖。

有文档吗?

不多。请查看 examples 文件夹中的示例代码。还有一些 wiki 页面,例如 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>

通过替换作为传递性 Maven 依赖的 jsch

当你有一个工件 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 的发布说明)。

常见问题

最低需要哪个 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 版本起,如果将 Bouncy Castle(bcprov-jdk18on)添加到 classpath,这些算法现在也可以用于较旧的 Java 版本。
    • 自 0.1.72 版本起,chacha20-poly1305@openssh.com 只能在将 Bouncy Castle(bcprov-jdk18on)添加到 classpath 后使用。

为什么 ssh-rsa 类型的密钥无法与此 JSch 分叉及我的服务器一起使用?

  • 自 0.2.0 版本起,RSA/SHA1 签名算法默认被禁用。
    • 通用密码学界已不再认为 SHA1 是安全的,而此 JSch 分叉致力于为其将使用的默认算法保持安全的选择。
    • 这也遵循了 OpenSSH 项目的做法,该项目自 OpenSSH 8.8 版本起默认禁用 RSA/SHA1 签名。
  • 默认情况下,ssh-rsa 类型密钥继续支持由 RFC 8332 定义的 RSA/SHA256(rsa-sha2-256)和 RSA/SHA512(rsa-sha2-512)签名算法。
  • 如果你的服务器只支持 RSA/SHA1 签名,而你的应用程序需要使用这些签名,那么你必须通过以下方式之一手动重新启用它们(另请参见 wiki 页面 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") 的代码。
    • 将 "ssh-rsa" 添加到你的 OpenSSH 类型的配置文件中,使用 "HostKeyAlgorithms" 和 "PubkeyAcceptedAlgorithms" 关键字,然后使用 OpenSSHConfig 类。

这个分叉与原始 JSch 100% 兼容吗?因为我的服务器连接不再工作了!

  • 为了与 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.setConfig("cipher.s2c", "...") +

使用 JSch 的其他项目

  • Jsync https://github.com/fizzed/jsync - 提供一个简单、高效、可靠且纯 Java 的类 rsync 文件和 目录同步工具,可用于编程方式调用。
  • Blaze https://github.com/fizzed/blaze - 一种将 Java 文件作为脚本运行的方式,内置了强大的 SSH、SFTP 和类 rsync 功能。

自分叉以来的更改:

参见 ChangeLog.md

下载工具
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", "...")