选对加密协议能明显加快ssh连接速度,关键在于匹配硬件与网络场景,优先选用curve25519密钥交换、aead对称加密(如chacha20-poly1305或aes256-gcm)和etm模式mac算法,并通过-vvv日志验证协商结果。

选对加密协议能明显加快 SSH 连接建立和数据传输速度,关键不是“越强越慢”,而是匹配硬件能力与网络场景。现代 SSH 协议中,真正影响性能的环节集中在密钥交换(KEX)、对称加密(Cipher)和消息认证(MAC)三部分,优化需从这三类算法协同入手。
优先选用 Curve25519 密钥交换算法
Curve25519 是目前综合性能最优的密钥交换方案,比传统 diffie-hellman-group-exchange-sha256 快 3–5 倍,且 CPU 占用低、抗侧信道攻击能力强。OpenSSH 7.4+ 和 SSHJ 默认已支持,只需在服务端或客户端显式启用:
- 服务端配置(/etc/ssh/sshd_config):
KexAlgorithms curve25519-sha256,ecdh-sha2-nistp256 - Java SSHJ 客户端代码:
config.setKeyAlgorithms(Arrays.asList("curve25519-sha256@libssh.org")) - 避免使用
diffie-hellman-group1-sha1等老旧算法,它们不仅慢,还已被标记为不安全
搭配 AEAD 模式的现代对称加密
AEAD(Authenticated Encryption with Associated Data)算法如 chacha20-poly1305@openssh.com 和 aes256-gcm@openssh.com 将加密与完整性校验一步完成,省去单独 MAC 计算开销,实测吞吐提升 15%–30%:
- 移动设备或 ARM 架构推荐
chacha20-poly1305@openssh.com(软件实现高效) - x86_64 服务器若开启 AES-NI 指令集,
aes256-gcm@openssh.com更优 - 服务端配置示例:
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com - 禁用 CBC 模式(如
aes256-cbc),它需额外 HMAC 步骤且易受填充预言攻击
启用 ETM(Encrypt-then-MAC)模式的 MAC 算法
传统 MAC(如 hmac-sha2-256)在加密后计算校验值,而 ETM 模式(如 hmac-sha2-256-etm@openssh.com)先加密再校验,逻辑更安全、流水线更友好,延迟更低:
- 服务端配置:
MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com - 确保客户端也支持 ETM(OpenSSH 6.8+、SSHJ 0.32+ 均默认兼容)
- 不建议混用 ETM 和非-ETM 算法,协商过程可能退回到较慢选项
验证协议协商结果是否生效
配置修改后必须验证实际使用的算法,避免因版本不匹配或策略限制导致回退:
- 连接时加
-vvv参数查看详细日志:ssh -vvv user@host→ 查找 “kex:”、“cipher:”、“mac:” 行 - 服务端检查当前生效配置:
sudo sshd -T | grep -E "(kex|cipher|mac)" - Java 应用可监听
TransportException或启用 SSHJ 的 DEBUG 日志,确认 CipherFactory 实际加载的是ChachaPolyCipher等高性能实现











