基本概念
SSH 传输层安全,是一个提供安全防护的协议框架,包括
- 连接协议 信息隧道复用为逻辑通道
- 用户认证协议 服务端用户身份验证
- 传输层协议,包括服务器认证,数据对称加密传输,摘要认证
SSH版本分 SSH1 和 SSH2,底层基于TCP协议,动态路由寻址
SSH服务端客户端建立连接过程:
- SSH版本号协商,服务端开启端口22监听,客户端发起TCP请求,
- 密钥、算法协商
- 服务端对客户端进行认证
- 客户端发送会话请求
- 交互会话,信息交互
涉及算法
密钥交换算法,非对称加密用于协商生成本地密钥,算法顺序 协商匹配的密钥算法可能影响协商
server host key算法
数据加密算法,对称加密,用于数据传输
摘要认证算法,数据一致性验证
三方件介绍
JSch 即JAVA secure channel,是纯JAVA的SSH2客户端实现。
Apache Mina sshd是纯JAVA的SSH1实现,支持客户端和服务端。
单就命令执行,JSch 效率比sshd高,且交互方式更简洁。
JSch 2018年后官方不再活跃,签名算法只支持SHA1无法扩展,只能侵入修改(考虑开源声明污染)
Mina-sshd 2.6.0发布,和2.5.1区别是废弃弱算法,默认不支持,但有实现类,可通过扩展ClientBuilder实现