SSH客户端
定义
一、说明
SshClient 是基于 TCP 的 SSH 客户端。完成配置并调用 ConnectAsync 后,客户端会自动执行 SSH 握手和用户认证;连接成功后可执行命令、打开交互式 Shell,并使用文件传输相关接口管理远程文件。
二、配置连接
客户端必须设置远程地址和登录用户名。密码认证可通过 Password 指定;使用私钥认证时,可设置 PrivateKeyFilePath 与 PrivateKeyPassPhrase。
连接成功后可通过 ServerIdentification 获取服务端 SSH 标识。客户端的 LocalIdentification 和 RemoteIdentification 分别表示本端和远端的 SSH 标识。
三、保活
PingAsync 通过 SSH 全局请求确认会话仍可用。返回结果失败时,应按业务决定是否关闭并重建连接。
四、执行远程命令
ExecuteCommandAsync 打开一次性命令通道并返回 SshCommandResult。结果中的 StandardOutput、StandardError 为字节数据,ExitStatus 为远程命令退出状态。
五、交互式 Shell
OpenShellAsync 打开一个可持续读写的 Shell 通道。通过 SshShellOption 配置伪终端类型和尺寸;成功后使用 SshShellSession.WriteAsync 写入输入、ReadAsync 读取输出,完成后调用 CloseAsync。
六、文件传输
SshFileOperator 的 Stream 在上传时是输入流、下载时是输出流,Path 则分别表示远程目标路径和远程源路径。设置 Overwrite 可覆盖目标文件,设置 Resume 可启用断点续传,MaxSpeed 可限制传输速度,ProgressChanged 可接收已传输字节数。
6.1 上传文件
6.2 下载文件
七、远程文件管理
7.1 列举目录
ListDirectoryAsync 返回 SshFileInfo 列表,可据此读取远程目录内容。
7.2 检查路径
7.3 创建目录
7.4 删除文件
7.5 删除目录
7.6 重命名路径
RenameAsync 同时适用于远程文件和目录。
八、连接配置
SshClientOption 的常用配置项如下:
| 配置项 | 说明 |
|---|---|
UserName | 登录用户名,必填。 |
Password | 密码认证使用的密码。 |
PrivateKeyFilePath | 私钥文件路径。 |
PrivateKeyPassPhrase | 私钥口令。 |
ConnectionTimeout | TCP 连接和 SSH 握手的超时时间,默认 10 秒。 |
TextEncoding | 命令输出的文本编码,默认 UTF-8。 |