跳到主要内容
版本:4.3

SSH客户端

定义

命名空间:
TouchSocket.Ssh
安装:
dotnet add package TouchSocketPro.Ssh

一、说明

SshClient 是基于 TCP 的 SSH 客户端。完成配置并调用 ConnectAsync 后,客户端会自动执行 SSH 握手和用户认证;连接成功后可执行命令、打开交互式 Shell,并使用文件传输相关接口管理远程文件。

二、配置连接

客户端必须设置远程地址和登录用户名。密码认证可通过 Password 指定;使用私钥认证时,可设置 PrivateKeyFilePathPrivateKeyPassPhrase

🔄 正在加载代码...

连接成功后可通过 ServerIdentification 获取服务端 SSH 标识。客户端的 LocalIdentificationRemoteIdentification 分别表示本端和远端的 SSH 标识。

三、保活

PingAsync 通过 SSH 全局请求确认会话仍可用。返回结果失败时,应按业务决定是否关闭并重建连接。

🔄 正在加载代码...

四、执行远程命令

ExecuteCommandAsync 打开一次性命令通道并返回 SshCommandResult。结果中的 StandardOutputStandardError 为字节数据,ExitStatus 为远程命令退出状态。

🔄 正在加载代码...

五、交互式 Shell

OpenShellAsync 打开一个可持续读写的 Shell 通道。通过 SshShellOption 配置伪终端类型和尺寸;成功后使用 SshShellSession.WriteAsync 写入输入、ReadAsync 读取输出,完成后调用 CloseAsync

🔄 正在加载代码...

六、文件传输

SshFileOperatorStream 在上传时是输入流、下载时是输出流,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私钥口令。
ConnectionTimeoutTCP 连接和 SSH 握手的超时时间,默认 10 秒。
TextEncoding命令输出的文本编码,默认 UTF-8。

九、示例 Demo