命令、shell 和隧道
TsgcSSHClient 使用密码或私钥连接,OnSSHHostKey 会把主机密钥指纹交给您检查。Execute 一次调用即可运行命令并返回输出。RequestPTY 和 RequestShell 打开交互式终端,OpenDirectTCPIP 和 RequestForwarding 可双向转发端口。
五个组件覆盖 SSH 连接的两端。 TsgcSSHClient 运行远程命令、打开交互式 shell 并转发端口。 TsgcSFTPClient 和 TsgcSCPClient 传输文件和整个文件夹。 TsgcSSHServer 和 TsgcSFTPServer 把您自己的 SSH 和 SFTP 服务放进应用程序内部。混合密钥交换 mlkem768x25519-sha256 在两端都优先提供。作为独立产品,已包含 sgcWebSockets Core 运行时。
每一个都是非可视化组件,可以拖放到窗体上,也可以在代码中创建。设置主机和凭据,连接事件,然后连接或开始监听。.NET 类使用相同的名称,因此 SSH 工作流在两种语言中的写法一致。
TsgcSSHClient 使用密码或私钥连接,OnSSHHostKey 会把主机密钥指纹交给您检查。Execute 一次调用即可运行命令并返回输出。RequestPTY 和 RequestShell 打开交互式终端,OpenDirectTCPIP 和 RequestForwarding 可双向转发端口。
TsgcSFTPClient 在同一条 SSH 连接上使用 SFTP v3。ListDirectory 返回名称、大小和日期,Put 和 Get 一次调用即可传输文件,Rename、Delete、MakeDirectory 和 RemoveDirectory 覆盖其余操作。传输时保持 16 个请求并行,而不是逐块等待。
TsgcSCPClient 通过 SSH 把文件复制到任何允许 scp 命令的服务器,无需单独的文件传输服务。UploadFolder 和 DownloadFolder 递归复制整个文件夹树,PreserveTimes 在另一端保留修改时间和访问时间。
TsgcSSHServer 在您选择的端口上监听,使用 Ed25519、ECDSA 或 RSA 主机密钥,GenerateHostKeyEd25519 可为您创建一个。OnSSHAuthPassword 和 OnSSHAuthPublicKey 决定谁可以进入,OnSSHExec 响应远程命令,OnSSHShell 提供交互式会话。
TsgcSFTPServer 从 RootFolder 提供 SFTP v3 和 scp 传输,客户端无法离开该目录。OnSFTPUserRoot 为每个用户提供独立的文件夹,ReadOnly 拒绝修改,OnSFTPOperation 在每次打开、重命名、删除和列表操作时触发,因此您可以逐一允许、拒绝并记录日志。
混合交换 mlkem768x25519-sha256 把 ML-KEM-768 与 X25519 结合起来,因此今天被记录的会话在未来的量子计算机面前依然保持私密。PostQuantumKex 默认开启,客户端和服务器都会优先提供。严格密钥交换可封堵 Terrapin 攻击。
同样的五个组件,适用于 Windows 32 位和 64 位以及 Linux 64 位上的 Delphi 7 至 13,也适用于 .NET 8、9 和 10 以及 .NET Standard 2.0。.NET 版本是完全托管的代码,无需部署 OpenSSL。两者都可以运行在桌面应用、控制台工具或服务中。
平台 →sgcSSH 是独立软件包。它内置 sgcWebSockets Core 运行时以及密钥交换所依赖的原生加密,每份授权都附带完整源代码,因此您可以在自己的调试器中单步跟踪协议代码。部署免版税。
查看价格 →各组件的参考页面:
客户端遵循同一种模式:设置主机和凭据,连接,调用方法。服务器则是另一种:设置端口和主机密钥,连接事件,激活。
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;
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.SFTPUserRoot(Sender: TObject; const aUsername: string;
var aRootFolder: string);
begin
aRootFolder := 'D:\sftp\' + aUsername; // one jail per user
end;
PostQuantumKex 默认开启,因此只要对方支持,每个会话都会协商 mlkem768x25519-sha256。 完整快速入门 →
OnSSHHostKey 检查服务器指纹。Execute,SFTP 用 Put 和 Get,scp 用 UploadFolder,每次传输都有进度事件。TsgcSFTPServer 链接到 TsgcSSHServer,由您自己的用户库决定谁可以登录,任何标准 ssh、sftp 或 scp 客户端都可以连接。sgcSSH 协商什么、您是否已经拥有这些组件、Delphi 版本基于什么,以及如何试用。答案都很简短,就写在这个页面上,而不是藏在小字条款里。
side component job
client TsgcSSHClient exec, shell, pty, port forwarding
client TsgcSFTPClient SFTP v3, 16 requests in flight
client TsgcSCPClient files and folder trees
server TsgcSSHServer password, public key, exec, shell
server TsgcSFTPServer SFTP v3, SCP, jail per user
key exchange, offered in this order
mlkem768x25519-sha256 hybrid post-quantum
curve25519, ECDH, DH group14 and group16
ciphers AES-GCM, AES-CTR
keys Ed25519, ECDSA, RSA
Demos\27.SSH 中的演示涵盖每一个组件。密钥交换、身份验证、通道和传输都是一等公民的方法和事件,完整源代码意味着中间没有任何黑盒。 所有组件和属性 →
sgcSSH 是 sgcWebSockets 家族中的一个软件包。可以独立购买并内置 Core 运行时,也可以通过 sgcWebSockets Enterprise 或 All-Access 获得全部五个组件。
SSH、SFTP 和 SCP 客户端以及 SSH 和 SFTP 服务器,独立产品,已包含 sgcWebSockets Core 运行时。
同一个软件包,授权给整个团队或整个站点。
完整的库:WebSocket 客户端和服务器、HTTP/2、IoT、P2P 和 AI 组件。其 Enterprise 版本也包含 SSH 和 SFTP 组件。
如果您拥有 sgcWebSockets Enterprise 或 All-Access,就已经拥有全部五个组件。sgcSSH 适合无需购买完整 sgcWebSockets 版本、只需 SSH 和 SFTP 的用户。
查看价格和许可证受到全球各地 Delphi、C++ Builder、Lazarus 和 .NET 开发者的信赖。
你们的 sgcWebSockets 库非常实用,而且易于设置。请继续保持!
sgcWebSockets 非常出色,你们的支持也是最棒的!
非常感谢你们的帮助和支持,我很喜欢你们的组件。
sgcSSH 是 eSeGeCe 面向 Delphi、C++ Builder 和 .NET 的组件库之一。它们遵循统一的约定,附带完整源代码,并可免版税部署。
面向 Delphi、C++ Builder、Lazarus 和 .NET 的 WebSocket、HTTP/2、MQTT、AMQP、WebRTC、AI 以及 30 多种 API 集成。Core 运行时就在这里。
sgcWebSockets Enterprise 所基于的自定义 Indy 库,以附加组件形式提供。Delphi SSH 组件需要它,sgcSSH 订单中始终包含。
对称和非对称加密、哈希以及 ML-KEM 和 ML-DSA 等后量子算法。自 sgcWebSockets Standard 起免费提供。
OAuth2 和 JWT 客户端、WebAuthn 通行密钥登录、TOTP、LDAP、SAML 和 OpenID Connect。独立产品,随附 sgcWebSockets Core 运行时。
面向 Delphi 和 C++ Builder 的 HTTP 服务器、HTTP/2 客户端、gRPC 客户端以及 Google Cloud Pub/Sub、Calendar 和 FCM 客户端。独立产品,随附 sgcWebSockets Core 运行时。
面向 Delphi 和 C++ Builder 的 MQTT、AMQP 0.9.1 和 1.0、Apache Kafka 与 STOMP 客户端组件。独立产品,随附 sgcWebSockets Core 运行时。
面向 Delphi 和 C++ Builder 的 REST 服务器、OpenAPI 服务器和 OpenAPI 客户端组件。独立产品,随附 sgcWebSockets Core 运行时。
面向 Delphi 和 C++ Builder 的 AI、LLM 和 MCP 组件。一个组件即可对接七家 LLM 提供商,另有 MCP、嵌入和语音。独立产品,随附 sgcWebSockets Core 运行时。
面向 Delphi 和 C++ Builder 的 Telegram 与 WhatsApp Business 客户端组件。独立产品,内置 sgcWebSockets Core 运行时。
基于 Bootstrap 5 和 htmx 的服务器端 HTML 与界面组件,用于以 Delphi 编写的 Web 应用程序。
文档使用 XAdES、PAdES、CAdES 和 ASiC,代码使用 Authenticode、ClickOnce、NuGet 和 VSIX。
扩展包、附加组件及更多