简介
SSH.NET 是一个针对 .NET 平台优化的 Secure Shell (SSH-2) 库,支持并行操作。它提供了丰富的功能,包括执行 SSH 命令、SFTP 和 SCP 文件传输、端口转发、交互式终端等功能,并支持多种认证方式和加密方法。
主要特性
- 命令执行:支持同步和异步方式执行 SSH 命令。
- SFTP 功能:支持同步和异步方式的文件上传和下载。
- SCP 功能:支持文件传输协议(SCP)。
- 端口转发:支持远程、动态和本地端口转发。
- 交互式终端:提供交互式 Shell/Terminal 实现。
- 认证方式:支持公钥、密码和键盘交互认证,包括多因素认证。
- 代理连接:支持通过 SOCKS4、SOCKS5 或 HTTP 代理进行连接。
支持以下目标框架:
- .NET Framework 4.6.2 及以上版本
- .NET Standard 2.0 和 2.1
- .NET 6 及以上版本
安装与使用
shell
Install-Package SSH.NET
使用
执行命令
如何使用 SshClient
类执行 SSH 命令:
csharp
using Renci.SshNet;
using (var client = new SshClient("sftp.foo.com", "guest", new PrivateKeyFile("path/to/my/key")))
{
client.Connect();
using (var cmd = client.RunCommand("echo 'Hello World!'"))
{
Console.WriteLine(cmd.Result); // 输出 "Hello World!\n"
}
}
使用 SFTP 上传和列出文件
SftpClient
类上传文件并列出目录内容:
csharp
using Renci.SshNet;
using System.IO;
using (var client = new SftpClient("sftp.foo.com", "guest", "pwd"))
{
client.Connect();
using (var fs = File.OpenRead(@"C:\tmp\test-file.txt"))
{
client.UploadFile(fs, "/home/guest/test-file.txt");
}
foreach (var file in client.ListDirectory("/home/guest/"))
{
Console.WriteLine($"{file.FullName} {file.LastWriteTime}");
}
}
主要类
SSH.NET 提供了以下主要类:
-
Renci.SshNet.SshClient
:用于执行 SSH 命令。 -
Renci.SshNet.SftpClient
:用于 SFTP 操作。 -
Renci.SshNet.ScpClient
:用于 SCP 操作。 -
Renci.SshNet.PrivateKeyFile
:用于处理私钥文件。 -
Renci.SshNet.SshCommand
:用于执行 SSH 命令。 -
Renci.SshNet.ShellStream
:用于实现交互式 Shell/Terminal。