关键流程说明
-
初始化连接
- 创建
SSHClient
并设置主机密钥策略(如AutoAddPolicy
)。 - 通过
Transport.connect()
建立 TCP 连接。
- 创建
-
协议层握手
- 版本协商:交换 SSH 协议版本(如
SSH-2.0-Paramiko
)。 - 密钥交换:使用 Diffie-Hellman 等算法生成会话密钥。
- 主机密钥验证:检查服务器指纹是否可信。
- 版本协商:交换 SSH 协议版本(如
-
用户认证
- 密码认证:明文发送密码(推荐使用密钥替代)。
- 公钥认证:客户端签名挑战,服务器验证签名。
-
执行操作
- 远程命令:通过
Channel
执行命令并读取输出。 - SFTP传输:分块读写文件,支持大文件高效传输。
- 端口转发:绑定本地端口,通过 SSH 隧道转发流量。
- 远程命令:通过
-
资源释放
- 显式关闭
Channel
、SFTPClient
和Transport
释放连接。
- 显式关闭
流程亮点
- 多路复用:单 TCP 连接支持多个独立
Channel
。 - 算法灵活:支持
aes256-ctr
、ed25519
等现代加密算法。 - 异步友好:通过
Transport
线程实现非阻塞 IO。