sgcSSH 功能矩阵

sgcSSH 的全部功能,按三个客户端组件、两个服务器组件以及它们协商的算法逐项列出。相同的类同时存在于 Delphi 和 .NET 中,每份授权都附带完整源代码。

SSH 客户端

命令、shell、转发和 rekey

SFTP 客户端

快速传输,16 个并行请求

SCP 客户端

文件和整个文件夹

SSH 服务器

身份验证、exec、shell 和子系统

SFTP 服务器

每用户 jail,只读模式

算法

后量子密钥交换优先

平台

Delphi 7 至 13 和 .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,带只读模式,并提供一个事件来允许或拒绝每项操作。

命令、shell 和隧道

TsgcSSHClient 打开一条经过身份验证的 SSH 连接,并在其上按需运行任意数量的通道。

能力API说明
连接Host, Port, Connect, Disconnect默认使用 22 端口。
密码身份验证Authentication.Username, Authentication.Password普通的用户名和密码登录。
公钥身份验证Authentication.PrivateKeyFile, Authentication.PassphrasePEM 或 PKCS#8 文件中的 Ed25519、ECDSA 和 RSA 私钥,在 .NET 上还支持 OpenSSH 格式。
主机密钥检查OnSSHHostKey接收密钥类型及其指纹,您可将其与已知主机库比对,并拒绝未知或已更改的密钥。
远程命令Execute打开通道,运行命令,并以字符串形式返回输出,支持超时。
交互式 shellOpenChannel, RequestPTY, RequestShell使用您所选的终端类型和大小的终端会话。
shell 输入和输出SendChannelData, OnSSHChannelData发送用户输入的内容,接收服务器打印的内容。
终端控制SendWindowChange, SendSignal, SendEOF调整终端大小、发送信号或结束通道的输入。
exec 和子系统通道RequestExec, RequestSubsystem面向基于 SSH 的自定义协议的底层通道请求。
本地端口转发OpenDirectTCPIP向服务器可访问的主机和端口打开 direct-tcpip 通道。
远程端口转发RequestForwarding, CancelForwarding请求服务器监听某个端口,并把其连接转发回客户端。
RekeyRekey为长时间运行的连接更新会话密钥。
后量子密钥交换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报告文件名和已传输的字节数。

您自己的 SSH 服务

TsgcSSHServer 接受任何标准 SSH 客户端,包括标准的 ssh、sftp 和 scp 命令行工具。

能力API说明
监听Port, Active启动和停止服务器。
主机密钥HostKeyFiles, GenerateHostKeyEd25519Ed25519、ECDSA 和 RSA 主机密钥。该类过程可为您创建 Ed25519 密钥文件。
密码身份验证OnSSHAuthPassword对照您自己的用户库检查用户名和密码。
公钥身份验证OnSSHAuthPublicKey接收密钥类型及其 SHA256 指纹,因此您只接受已知的密钥。
远程命令OnSSHExec, SendChannelData, SendExitStatus, CloseChannel响应命令、报告其退出状态并关闭通道。
交互式 shellOnSSHShell, OnSSHChannelData由您自己的代码提供终端会话。
子系统SFTPServersftp 之类的子系统请求会被路由到已关联的 TsgcSFTPServer。
连接事件OnSSHConnect, OnSSHDisconnect记录每个连接及对端地址。

为每个用户提供 jail 的文件服务器

TsgcSFTPServer 接入 TsgcSSHServer,并从一个客户端无法离开的文件夹提供文件。

能力API说明
协议SFTP, SCPSFTP v3,启用后还支持 scp 传输。
根文件夹RootFolder向客户端显示的文件夹。其外部的路径会被拒绝。
每个用户一个文件夹OnSFTPUserRoot返回每个用户的根目录,使每个用户只能看到自己的文件。
只读模式ReadOnly拒绝上传、删除和重命名。
按操作控制OnSFTPOperation在每次读或写打开、删除、重命名、创建和删除文件夹、属性变更和列表操作时触发。把 aAccept 设为 False,客户端就会收到权限被拒绝的错误。
大文件下载流量控制下载使用恒定的内存,与文件大小无关。

后量子优先

客户端和服务器优先提供最强的算法,只有在对方需要时才回退到经典算法。

方面算法说明
密钥交换mlkem768x25519-sha256ML-KEM-768 与 X25519 结合,是最新 SSH 版本的默认设置。客户端和服务器都会优先提供。
经典密钥交换curve25519、ECDH、Diffie-Hellman group14 和 group16当对方不支持混合交换时使用。
加密算法AES-GCM, AES-CTRAES-GCM 在 .NET 8 及更高版本上由硬件加速。
主机密钥和用户密钥Ed25519, ECDSA, RSA使用 SHA-2 的 RSA 签名,通过 server-sig-algs 选择。
密钥文件PEM、PKCS#8、OpenSSH(.NET)加密的私钥通过口令打开。
严格密钥交换Terrapin 缓解措施封堵 SSH 握手中的前缀截断攻击。

编译器、框架和目标平台

Delphi 和 .NET 上相同的五个组件。

方面细节
DelphiDelphi 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,并附带完整源代码。
超值之选:All-AccesseSeGeCe 全部产品,含高级支持,每年 €1,059 起。
查看 All-Access 价格

使用 sgcSSH 开发

下载免费试用版,从 Delphi 或 .NET 运行您的第一条远程命令或 SFTP 上传。