独立产品 后量子 SSH 与 SFTP

sgcSSH:面向 Delphi 和 .NET 的 SSH 与 SFTP 客户端和服务器

五个组件覆盖 SSH 连接的两端。TsgcSSHClient 运行远程命令、打开带 pty 的交互式 shell 并转发端口。TsgcSFTPClient 和 TsgcSCPClient 传输文件和整个文件夹。TsgcSSHServer 和 TsgcSFTPServer 把您自己的 SSH 和 SFTP 服务放进应用程序内部,并为每个用户提供一个 jail。混合后量子密钥交换 mlkem768x25519-sha256 是最新 SSH 版本的默认设置,客户端和服务器都会优先提供。

完整源代码
Delphi 7 至 13 和 .NET
密钥交换 ML-KEM-768 + X25519 mlkem768x25519-sha256,两端均优先提供
客户端 SSH, SFTP, SCP
服务器 SSH, SFTP
5 组件 三个客户端和两个服务器
16 并行 SFTP 请求 在本地网络中传输 100 MB 约需一秒
2 种语言 Delphi 和 .NET,相同的五个类
100% 包含源代码 每个组件以及内置的 Core 运行时
12 个月更新 授权有效期内发布的每个版本

三件值得先了解的事

sgcSSH 需要您准备什么、您是否已经拥有这些组件,以及 Delphi 版本基于什么。三个答案都很简短。

sgcSSH 是自包含的

独立使用时,已包含 sgcWebSockets Core 运行时,以及密钥交换所依赖的原生加密:ML-KEM-768、X25519、ECDH、AES-GCM 和 SHA-2 系列。一个 SKU,一个安装程序。

每份授权都附带完整源代码,因此您可以在自己的调试器中单步跟踪协议代码,而不是面对一个看不到内部的二进制文件。

版本重叠

您的 sgcWebSockets 版本中是否已经包含?

全部五个 SSH 组件都包含在 sgcWebSockets Enterprise 中,All-Access 则包含所有产品。在 .NET 上,它们属于已注册的 sgcWebSockets 包,不在免费的 Community 版本中。

sgcSSH 面向相反的情形:您希望在应用程序中使用 SSH 和 SFTP,却不想购买完整的 sgcWebSockets 版本。购买前请先确认您的版本已经涵盖哪些内容。

需要附加包

Delphi 版 SSH 需要 sgcCustomIndy

Delphi 组件基于 sgcCustomIndy 附加包所提供的、经过修补的 Indy 库中的 SSH 单元。订购 sgcSSH 时始终包含 sgcCustomIndy。

所显示的 sgcSSH 价格已经包含 sgcCustomIndy。

三个客户端,两个服务器

每一个都是非可视化组件,可以拖放到窗体上,也可以在代码中创建,注册在 SGC SSH 面板页上。设置主机和凭据,连接事件,然后连接或开始监听。.NET 类使用相同的名称。

SSH 客户端1 个组件

命令、shell 和隧道

TsgcSSHClient 使用密码或私钥连接,OnSSHHostKey 会把主机密钥类型和指纹交给您,供您与已知主机库比对。Execute 一次调用即可运行命令并返回输出。对于交互式会话,OpenChannel、RequestPTY 和 RequestShell 打开终端,SendChannelData 向其输入内容,OnSSHChannelData 返回服务器的输出,终端协议的其余部分由 SendWindowChange 和 SendSignal 处理。OpenDirectTCPIP 通过服务器转发本地连接,RequestForwarding 请求服务器把远程端口转发回来,Rekey 则为长时间运行的连接更新会话密钥。

TsgcSSHClient exec · shell · pty · 端口转发 · rekey
SFTP 客户端1 个组件

快速传输文件,一个方法搞定

TsgcSFTPClient 在同一条 SSH 连接上使用 SFTP v3。RealPath 解析主目录,ListDirectory 返回名称、大小、日期和文件夹标志,Put 和 Get 一次调用即可上传和下载文件。Rename、Delete、MakeDirectory 和 RemoveDirectory 覆盖文件管理器的其余功能,OnSFTPProgress 报告已传输的字节数,可直接用于进度条。传输时保持 16 个请求并行,而不是逐块等待,因此在本地网络中传输 100 MB 文件约需一秒。

TsgcSFTPClient SFTP v3 · 16 个并行请求
SCP 客户端1 个组件

使用 scp 传输文件和整个文件夹

TsgcSCPClient 通过 SSH 把文件复制到任何允许 scp 命令的服务器,无需单独的文件传输服务。Upload 和 Download 复制单个文件,UploadFolder 和 DownloadFolder 递归复制整个文件夹树,PreserveTimes 在另一端保留修改时间和访问时间。OnSCPProgress 报告文件名和已传输的字节数。

TsgcSCPClient 文件 · 文件夹 · 保留时间
SSH 服务器1 个组件

在您自己的进程中运行您自己的 SSH 服务

TsgcSSHServer 在您选择的端口上监听,并使用从 HostKeyFiles 加载的 Ed25519、ECDSA 或 RSA 主机密钥证明自己的身份,GenerateHostKeyEd25519 可为您创建一个。OnSSHAuthPassword 和 OnSSHAuthPublicKey 决定谁可以进入,后者会收到密钥类型及其 SHA256 指纹。OnSSHExec 响应远程命令,OnSSHShell 提供交互式会话,子系统请求则被路由到您的处理程序或 TsgcSFTPServer。任何标准 SSH 客户端都可以连接它,包括标准的 ssh、sftp 和 scp 命令行工具。

TsgcSSHServer 密码 · 公钥 · exec · shell · 子系统
SFTP 服务器1 个组件

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

TsgcSFTPServer 通过其 SFTPServer 属性与 SSH 服务器相连,从 RootFolder 提供 SFTP v3,启用 SCP 后还提供 scp 传输。客户端无法离开该目录。OnSFTPUserRoot 为每个用户提供独立的文件夹,ReadOnly 拒绝上传、删除和重命名,OnSFTPOperation 在每次打开、删除、重命名、文件夹变更、属性变更和列表操作时触发,因此您可以逐一允许或拒绝并记录日志。流量控制使大文件下载的内存占用保持恒定,与文件大小无关。

TsgcSFTPServer SFTP v3 · SCP · 每用户 jail · 只读

在您自己的代码中使用 SSH 和 SFTP

这些组件都是普通的非可视化组件,因此可以融入您的应用程序,无论它是 VCL 或 FMX 桌面应用、控制台工具、Windows 服务、Linux 守护进程还是 .NET 工作进程。以下是客户常见的做法,每一种都对应驱动它的成员。

在 Linux 服务器上运行维护命令 Execute

在 Delphi 或 .NET 工具中重启服务、读取日志或检查磁盘空间,并以字符串形式取回输出。

嵌入式终端窗口 RequestPTY

打开带 pty 的 shell 并显示在您自己的界面中,适用于支持工具和设备控制台。

与合作伙伴定时交换文件 Put / Get

在服务中通过 SFTP 上传发票、下载报表,并带有进度和错误事件。

访问堡垒机后面的数据库 OpenDirectTCPIP

通过 SSH 服务器转发连接,而不是把数据库端口开放给网络。

产品内部的 SFTP 投递箱 OnSFTPUserRoot

为每位客户提供私有文件夹,由您自己的用户数据库决定谁可以登录。

让流量在未来依然保持私密 PostQuantumKex

ML-KEM-768 与 X25519 的混合交换可以保护今天被记录的会话,使其不被未来的量子计算机破解。

后量子优先,只用现代算法

客户端和服务器会协商双方都支持的最强算法,首先是混合后量子密钥交换。无需任何配置即可使用。

mlkem768x25519-sha256 优先提供

混合交换把 ML-KEM-768 与 X25519 结合起来,即使攻击者今天记录流量、日后拥有量子计算机,会话密钥依然安全。它是最新 SSH 版本的默认设置,当前的 SSH 客户端和服务器都会自动协商它。PostQuantumKex 默认开启。

以经典算法作为回退

当对方不支持时,交换会回退到 curve25519、ECDH 以及 Diffie-Hellman group14 和 group16。加密算法为 AES-GCM 和 AES-CTR,主机密钥和用户密钥为 Ed25519、ECDSA 或 RSA。

针对 Terrapin 的严格密钥交换

严格密钥交换可封堵 Terrapin 前缀截断攻击,server-sig-algs 则让客户端选择使用 SHA-2 的 RSA 签名,而不是旧的 SHA-1 签名。私钥可从 PEM 和 PKCS#8 文件加载,.NET 版本还能读取 OpenSSH 密钥格式。

两个平台均使用原生加密

密钥交换在 Delphi 中运行于 sgcWebSockets 的原生加密单元,在 .NET 中运行于完全托管的代码,.NET 版本无需部署 OpenSSL。在 .NET 8 及更高版本上,AES-GCM 由硬件加速。

运行命令,提供文件夹

客户端遵循同一种模式:设置主机和凭据,连接,调用方法。服务器则是另一种:设置端口和主机密钥,连接事件,激活。

var
  SSH: TsgcSSHClient;
  SFTP: TsgcSFTPClient;
begin
  // run a command
  SSH := TsgcSSHClient.Create(nil);
  SSH.Host := 'build01.example.com';
  SSH.Port := 22;
  SSH.Authentication.Username := 'deploy';
  SSH.Authentication.PrivateKeyFile := 'C:\keys\id_ed25519.pem';
  SSH.OnSSHHostKey := SSHHostKey;   // check the fingerprint
  SSH.Connect;
  Memo1.Text := SSH.Execute('uname -a');
  SSH.Disconnect;

  // upload a file over SFTP
  SFTP := TsgcSFTPClient.Create(nil);
  SFTP.Host := 'files.example.com';
  SFTP.Authentication.Username := 'partner';
  SFTP.Authentication.Password := 'secret';
  SFTP.Connect;
  SFTP.Put('C:\export\invoices.zip', '/upload/invoices.zip');
  SFTP.Disconnect;
end;

PostQuantumKex 默认开启,因此只要服务器支持,两个会话都会协商 mlkem768x25519-sha256。

begin
  SFTPServer := TsgcSFTPServer.Create(nil);
  SFTPServer.RootFolder := 'D:\sftp';
  SFTPServer.SFTP := True;
  SFTPServer.SCP := True;
  SFTPServer.OnSFTPUserRoot := SFTPUserRoot;

  SSHServer := TsgcSSHServer.Create(nil);
  SSHServer.Port := 2222;
  SSHServer.HostKeyFiles.Text := 'hostkey_ed25519.pem';
  SSHServer.OnSSHAuthPassword := SSHAuthPassword;
  SSHServer.SFTPServer := SFTPServer;
  SSHServer.Active := True;
end;

procedure TForm1.SSHAuthPassword(Sender: TObject;
  aConnection: TsgcSSHServerConnection; const aUsername, aPassword: string;
  var aAccept: Boolean);
begin
  aAccept := CheckUser(aUsername, aPassword);   // your user store
end;

procedure TForm1.SFTPUserRoot(Sender: TObject; const aUsername: string;
  var aRootFolder: string);
begin
  aRootFolder := 'D:\sftp\' + aUsername;   // one jail per user
end;

使用 sftp -P 2222 user@127.0.0.1 或 scp -P 2222 file.txt user@127.0.0.1:/ 连接。Demos\27.SSH 中的演示涵盖全部五个组件。

Delphi 和 .NET,桌面与服务器

两个平台上都是相同的五个组件,适用于桌面应用程序、控制台工具和服务。

Delphi Delphi 7 至 13,VCL、FMX、控制台和服务
Windows Win32 Windows Win64 Linux64
.NET 完全托管代码,无需 OpenSSL
.NET 8 .NET 9 .NET 10 .NET Standard 2.0
组件 注册在 SGC SSH 面板页上
TsgcSSHClient TsgcSFTPClient TsgcSCPClient TsgcSSHServer TsgcSFTPServer
试用版安装程序 sgcWebSockets All-Access 试用版包含 SSH 组件
一次下载,全部五个组件

下载试用版安装程序 →

独立软件包

sgcSSH 单独授权,单个开发者的价格起价为 €398。所有授权均包含完整源代码、1 年更新,以及 50% 到 70% 的续订折扣:续订 1 个包为 50%,2 个包为 60%,3 个及以上为 70%。sgcAI、sgcMQ、sgcSocial、sgcCustomIndy、sgcAuth、sgcHTTP、sgcREST、sgcCrypto 和 sgcSSH 各算作一个包。

sgcSSH

€398

提供 Single、Team 和 Site 授权。

  • SSH 客户端:命令、带 pty 的 shell、端口转发、rekey
  • 用于文件和文件夹的 SFTP 与 SCP 客户端
  • 为每个用户提供 jail 的 SSH 与 SFTP 服务器
  • 后量子密钥交换 mlkem768x25519-sha256
  • 已包含 sgcWebSockets Core 运行时和 sgcCustomIndy
  • Delphi 7 至 13 和 .NET
  • 完整源代码
  • 1 年更新

sgcSSH 已包含 sgcWebSockets Core 运行时,因此 SSH 和 SFTP 组件无需再购买其他任何产品。

结账时会列出三个项目:sgcWebSockets Core 运行时授权(按零费用计算)、sgcSSH 包本身,以及 Delphi SSH 组件所需的 sgcCustomIndy。sgcCustomIndy 始终包含,所显示的价格已经包含它。完整价格详情。

3,000+开发者
20+年
761+组件
30+API 集成
5平台
30 天退款保证不满意?可在购买后 30 天内申请全额退款。 查看退款政策

交付 SSH 和 SFTP,迎接后量子时代

来自原生 Delphi 和 .NET 代码的客户端和服务器,内置运行时,完整源代码一并提供。下载 All-Access 试用版安装程序,今天就连接您的第一台服务器。

eSeGeCe 的其他产品

把 sgcSSH 与我们其他的 Delphi、C++ Builder 和 .NET 组件库搭配使用。

sgcWebSockets

完整的库:WebSocket 客户端和服务器、HTTP/2、IoT、P2P 和 AI 组件。其 Enterprise 版本也包含 SSH 和 SFTP 组件。

了解更多 →

sgcCustomIndy

sgcWebSockets Enterprise 所基于的定制 Indy 库,以附加包形式提供。Delphi SSH 组件需要它,sgcSSH 订单始终包含。

了解更多 →

sgcCrypto

对称与非对称加密、哈希,以及 ML-KEM 和 ML-DSA 等后量子算法。从 sgcWebSockets Standard 起免费提供。

了解更多 →

sgcAuth

OAuth2 和 JWT 客户端、WebAuthn 通行密钥登录、TOTP、LDAP、SAML 和 OpenID Connect,已内置 Core 运行时。

了解更多 →

sgcHTTP

HTTP 服务器、HTTP/2 和 gRPC 客户端,以及 Google Cloud Pub/Sub、Calendar 和 Firebase Cloud Messaging,已内置 Core 运行时。

了解更多 →

sgcMQ

原生 MQTT 3.1.1/5.0、AMQP 0.9.1、AMQP 1.0、Apache Kafka 和 STOMP 客户端组件,已内置 Core 运行时。

了解更多 →