纯Java SSH客户端/服务器库,实现SSH-2协议,支持多种加密算法、密钥交换、认证方法、SFTP、SCP和端口转发,用于安全远程访问。

Apache MINA SSHD 是一个 100% 纯 Java 库,用于在客户端和服务器端支持 SSH 协议。它并不 旨在替代 Unix 操作系统的 SSH 客户端或 SSH 服务器,而是为需要 SSH 支持的基于 Java 的应用程序提供支持。
该库可以利用多种 I/O 后端:
AsynchronousSocketChannel。server-sig-algs 扩展提供了默认的客户端和服务器实现。supported - DRAFT 05 - 第 4.4 节supported2 - DRAFT 13 第 5.4 节versions - DRAFT 09 第 4.6 节vendor-id - DRAFT 09 - 第 4.4 节acl-supported - DRAFT 11 - 第 5.4 节newline - DRAFT 09 第 4.3 节md5-hash, md5-hash-handle - DRAFT 09 - 第 9.1.1 节check-file-handle, check-file-name - eddsa 可选模块), [email protected], [email protected]
, [email protected], [email protected], [email protected]
, [email protected], [email protected], [email protected]注意: 以上列表包含了代码中支持的所有安全设置。然而,根据最新建议,默认客户端/服务器设置仅包含当前认为安全可用的设置。希望包含不安全设置的用户必须显式进行设置。以下设置已被弃用,不再包含在默认设置中:
警示: 根据 RFC 8332 - 第 3.3 节
实施经验表明,存在一些服务器会对尝试 SSH 服务器不支持的公钥算法的客户端施加认证惩罚。
当使用 RSA 密钥向未实现 "server-sig-algs" 扩展的服务器进行认证时,客户端可能默认使用 "ssh-rsa" 签名以避免认证惩罚。当新的 rsa-sha2-* 算法得到足够广泛的采用并且有必要禁用 "ssh-rsa" 时,客户端可能默认使用其中一种新算法。
这意味着遇到此问题(及相关问题)的用户必须显式修改支持的安全设置以避免该问题。
特别声明: ssh-rsa 被保留在默认设置中,因为仍有许多系统/用户在使用它。然而,在未来的版本中,它将被从默认设置中移除。因此,我们强烈建议用户尽快迁移到其他密钥(例如 ECDSA、ED25519)。
错误报告以及改进或功能请求可以提交到 GitHub 问题跟踪器 或 Apache 问题跟踪器。
敏感问题(如安全漏洞)必须通过 私人渠道 报告,而不要通过任一问题跟踪器。
Java 8+(从版本 1.3 开始)
代码仅需要核心抽象的 slf4j-api 模块。可以从众多现有适配器中选择实际的日志 API 实现。
sshd-common - 包含整个项目使用的基本类,以及不需要客户端或服务器网络支持的代码。
sshd-core - 包含基本的 SSH 客户端/服务器代码,实现了连接、传输、通道、转发等功能。
sshd-sftp - 包含服务器端 SFTP 子系统和 SFTP 客户端代码。
sshd-scp - 包含服务器端 SCP 命令处理器和 SCP 客户端代码。
sshd-ldap - 包含使用 LDAP 服务器的服务器端密码和公钥认证器。
sshd-git - 包含 JGit SSH 会话工厂的替代品。
sshd-osgi - 包含一个结合了 sshd-common 和 sshd-core 的构件,以便在 OSGi 环境中部署。
sshd-putty - 包含用于解析 PUTTY 密钥文件的代码。
sshd-openpgp - 包含用于解析 OpenPGP 密钥文件的代码(存在一些限制——参见相关章节)。
sshd-cli - 包含用于命令行客户端/服务器的简单模板,提供与 Linux ssh/sshd 命令相似的观感。
sshd-contrib - 实验性代码,目前正在审查中,可能会被移入其他构件(或成为一个全新的构件——例如,sshd-putty 就是如此演进的)。
包含测试:
mvn clean install
不带测试:
mvn -Pquick clean install
copy-file, copy-data - DRAFT 00 - 第 6、7 节space-available - DRAFT 09 - 第 9.2 节filename-charset, filename-translation-control - DRAFT 13 - 第 6 节 - 仅客户端