sgcSSH 功能矩阵
sgcSSH 的全部功能,按三个客户端组件、两个服务器组件以及它们协商的算法逐项列出。相同的类同时存在于 Delphi 和 .NET 中,每份授权都附带完整源代码。
sgcSSH 的全部功能,按三个客户端组件、两个服务器组件以及它们协商的算法逐项列出。相同的类同时存在于 Delphi 和 .NET 中,每份授权都附带完整源代码。
sgcSSH 是自包含的。它已内置 sgcWebSockets Core 运行时,Delphi 组件所基于的 sgcCustomIndy 附加包也始终包含在订单中。
sgcWebSockets 中也包含。全部五个组件同样包含在 sgcWebSockets Enterprise 中,All-Access 则包含所有产品。在 .NET 上它们属于已注册的包,不在免费的 Community 版本中。sgcSSH 是为只需要 SSH 和 SFTP 的团队准备的独立软件包。
三个客户端和两个服务器,注册在 SGC SSH 面板页上。
| 组件 | 类 | 作用 | 描述 |
|---|---|---|---|
| SSH 客户端 | TsgcSSHClient | 运行命令 | 远程命令、带 pty 的交互式 shell、本地和远程端口转发,以及长时间运行会话的 rekey。 |
| SFTP 客户端 | TsgcSFTPClient | 传输文件 | 支持 16 个并行请求的 SFTP v3 文件管理器操作,因此在本地网络中传输 100 MB 约需一秒。 |
| SCP 客户端 | TsgcSCPClient | 复制文件和文件夹 | 使用 scp 上传和下载单个文件或整个文件夹树,可选保留文件时间。 |
| SSH 服务器 | TsgcSSHServer | 接受 SSH 客户端 | 密码和公钥身份验证,exec、shell 和子系统请求,使用 Ed25519、ECDSA 和 RSA 主机密钥。 |
| SFTP 服务器 | TsgcSFTPServer | 提供一个文件夹 | 从根文件夹提供 SFTP v3 和 SCP,每个用户一个 jail,带只读模式,并提供一个事件来允许或拒绝每项操作。 |
TsgcSSHClient 打开一条经过身份验证的 SSH 连接,并在其上按需运行任意数量的通道。
| 能力 | API | 说明 |
|---|---|---|
| 连接 | Host, Port, Connect, Disconnect | 默认使用 22 端口。 |
| 密码身份验证 | Authentication.Username, Authentication.Password | 普通的用户名和密码登录。 |
| 公钥身份验证 | Authentication.PrivateKeyFile, Authentication.Passphrase | PEM 或 PKCS#8 文件中的 Ed25519、ECDSA 和 RSA 私钥,在 .NET 上还支持 OpenSSH 格式。 |
| 主机密钥检查 | OnSSHHostKey | 接收密钥类型及其指纹,您可将其与已知主机库比对,并拒绝未知或已更改的密钥。 |
| 远程命令 | Execute | 打开通道,运行命令,并以字符串形式返回输出,支持超时。 |
| 交互式 shell | OpenChannel, RequestPTY, RequestShell | 使用您所选的终端类型和大小的终端会话。 |
| shell 输入和输出 | SendChannelData, OnSSHChannelData | 发送用户输入的内容,接收服务器打印的内容。 |
| 终端控制 | SendWindowChange, SendSignal, SendEOF | 调整终端大小、发送信号或结束通道的输入。 |
| exec 和子系统通道 | RequestExec, RequestSubsystem | 面向基于 SSH 的自定义协议的底层通道请求。 |
| 本地端口转发 | OpenDirectTCPIP | 向服务器可访问的主机和端口打开 direct-tcpip 通道。 |
| 远程端口转发 | RequestForwarding, CancelForwarding | 请求服务器监听某个端口,并把其连接转发回客户端。 |
| Rekey | Rekey | 为长时间运行的连接更新会话密钥。 |
| 后量子密钥交换 | PostQuantumKex | 默认开启:优先提供 mlkem768x25519-sha256。 |
TsgcSFTPClient 在同一 SSH 传输上实现 SFTP v3,身份验证和密钥交换选项与 SSH 客户端相同。
| 能力 | API | 说明 |
|---|---|---|
| 主目录 | RealPath | 把 . 之类的路径解析为服务器上的绝对路径。 |
| 文件夹列表 | ListDirectory | 每个条目的名称、大小、修改日期和文件夹标志。 |
| 上传和下载 | Put, Get | 每个文件一次调用,并行 16 个请求。在本地网络中传输 100 MB 约需一秒。 |
| 文件管理 | Rename, Delete, MakeDirectory, RemoveDirectory | 文件管理器所需的一切。 |
| 进度 | OnSFTPProgress | 报告已传输的字节数,可直接用于进度条。 |
TsgcSCPClient 通过 SSH 把文件复制到任何允许 scp 命令的服务器。
| 能力 | API | 说明 |
|---|---|---|
| 单个文件 | Upload, Download | 把一个文件复制到远程路径或从远程路径复制回来。 |
| 文件夹树 | UploadFolder, DownloadFolder | 递归复制整个文件夹。 |
| 文件时间 | PreserveTimes | 在另一端保留修改时间和访问时间。 |
| 进度 | OnSCPProgress | 报告文件名和已传输的字节数。 |
TsgcSSHServer 接受任何标准 SSH 客户端,包括标准的 ssh、sftp 和 scp 命令行工具。
| 能力 | API | 说明 |
|---|---|---|
| 监听 | Port, Active | 启动和停止服务器。 |
| 主机密钥 | HostKeyFiles, GenerateHostKeyEd25519 | Ed25519、ECDSA 和 RSA 主机密钥。该类过程可为您创建 Ed25519 密钥文件。 |
| 密码身份验证 | OnSSHAuthPassword | 对照您自己的用户库检查用户名和密码。 |
| 公钥身份验证 | OnSSHAuthPublicKey | 接收密钥类型及其 SHA256 指纹,因此您只接受已知的密钥。 |
| 远程命令 | OnSSHExec, SendChannelData, SendExitStatus, CloseChannel | 响应命令、报告其退出状态并关闭通道。 |
| 交互式 shell | OnSSHShell, OnSSHChannelData | 由您自己的代码提供终端会话。 |
| 子系统 | SFTPServer | sftp 之类的子系统请求会被路由到已关联的 TsgcSFTPServer。 |
| 连接事件 | OnSSHConnect, OnSSHDisconnect | 记录每个连接及对端地址。 |
TsgcSFTPServer 接入 TsgcSSHServer,并从一个客户端无法离开的文件夹提供文件。
| 能力 | API | 说明 |
|---|---|---|
| 协议 | SFTP, SCP | SFTP v3,启用后还支持 scp 传输。 |
| 根文件夹 | RootFolder | 向客户端显示的文件夹。其外部的路径会被拒绝。 |
| 每个用户一个文件夹 | OnSFTPUserRoot | 返回每个用户的根目录,使每个用户只能看到自己的文件。 |
| 只读模式 | ReadOnly | 拒绝上传、删除和重命名。 |
| 按操作控制 | OnSFTPOperation | 在每次读或写打开、删除、重命名、创建和删除文件夹、属性变更和列表操作时触发。把 aAccept 设为 False,客户端就会收到权限被拒绝的错误。 |
| 大文件下载 | 流量控制 | 下载使用恒定的内存,与文件大小无关。 |
客户端和服务器优先提供最强的算法,只有在对方需要时才回退到经典算法。
| 方面 | 算法 | 说明 |
|---|---|---|
| 密钥交换 | mlkem768x25519-sha256 | ML-KEM-768 与 X25519 结合,是最新 SSH 版本的默认设置。客户端和服务器都会优先提供。 |
| 经典密钥交换 | curve25519、ECDH、Diffie-Hellman group14 和 group16 | 当对方不支持混合交换时使用。 |
| 加密算法 | AES-GCM, AES-CTR | AES-GCM 在 .NET 8 及更高版本上由硬件加速。 |
| 主机密钥和用户密钥 | Ed25519, ECDSA, RSA | 使用 SHA-2 的 RSA 签名,通过 server-sig-algs 选择。 |
| 密钥文件 | PEM、PKCS#8、OpenSSH(.NET) | 加密的私钥通过口令打开。 |
| 严格密钥交换 | Terrapin 缓解措施 | 封堵 SSH 握手中的前缀截断攻击。 |
Delphi 和 .NET 上相同的五个组件。
| 方面 | 细节 |
|---|---|
| Delphi | Delphi 7 至 13,适用于 VCL、FMX、控制台应用程序和服务。 |
| Delphi 目标平台 | Windows Win32、Windows Win64 和 Linux64。 |
| .NET | .NET 8、.NET 9、.NET 10 和 .NET Standard 2.0,完全托管代码,无需 OpenSSL。 |
| 演示 | Demos\27.SSH:SSH 客户端、SFTP 客户端、SCP 客户端、SSH 服务器和 SFTP 服务器。 |
| 版本 | 全部五个组件同样包含在 sgcWebSockets Enterprise 中,All-Access 则包含所有产品。在 .NET 上它们属于已注册的包,不在 Community 版本中。 |
| 授权 | 独立使用。已内置 sgcWebSockets Core 运行时,订单包含 sgcCustomIndy,并附带完整源代码。 |