SSH.NET
SSH.NET 是适用于 .NET 的 Secure Shell (SSH-2) 库,针对并行性进行了优化。
主要特点
- 使用同步和异步方法执行 SSH 命令
- 用于同步和异步操作的 SFTP 功能
- SCP功能
- 远程、动态和本地端口转发
- 交互式 shell/终端实现
- 通过公钥、密码和键盘交互方法(包括多因素)进行身份验证
- 通过 SOCKS4、SOCKS5 或 HTTP 代理连接
如何使用
运行命令
using ( var client = new SshClient ( " sftp.foo.com " , " guest " , new PrivateKeyFile ( " path/to/my/key " ) ) )
{
client . Connect ( ) ;
using SshCommand cmd = client . RunCommand ( " echo 'Hello World!' " ) ;
Console . WriteLine ( cmd . Result ) ; // "Hello World!n"
}
使用 SFTP 上传和列出文件
using ( var client = new SftpClient ( " sftp.foo.com " , " guest " , " pwd " ) )
{
client . Connect ( ) ;
using ( FileStream fs = File . OpenRead ( @"C:tmptest-file.txt" ) )
{
client . UploadFile ( fs , " /home/guest/test-file.txt " ) ;
}
foreach ( ISftpFile file in client . ListDirectory ( " /home/guest/ " ) )
{
Console . WriteLine ( $" { file . FullName } { file . LastWriteTime } " ) ;
}
}
主要类型
该库提供的主要类型有:
- Renci.SshNet.SshClient
- Renci.SshNet.SftpClient
- Renci.SshNet.ScpClient
- Renci.SshNet.PrivateKeyFile
- Renci.SshNet.Ssh命令
- Renci.SshNet.ShellStream
附加文档
加密方式
SSH.NET支持以下加密方法:
- aes128-ctr
- aes192-ctr
- aes256-ctr
- aes128-gcm @openssh.com
- aes256-gcm @openssh.com
- Chacha20-poly1305 @openssh.com
- aes128-CBC
- aes192-CBC
- aes256-CBC
- 3des-CBC
密钥交换方法
SSH.NET支持以下密钥交换方法:
- 曲线25519-sha256
- 曲线25519-sha256 @libssh.org
- ECDH-SHA2-nistp256
- ECDH-SHA2-nistp384
- ECDH-SHA2-nistp521
- 迪菲-赫尔曼-组交换-sha256
- 迪菲-赫尔曼-组交换-sha1
- 迪菲-赫尔曼-group16-sha512
- 迪菲-赫尔曼-group14-sha256
- 迪菲-赫尔曼-group14-sha1
- 迪菲-赫尔曼-group1-sha1
公钥认证
SSH.NET支持以下私钥格式:
- RSA 在
- OpenSSL 传统 PEM 格式(“BEGIN RSA PRIVATE KEY”)
- OpenSSL PKCS#8 PEM 格式(“开始私钥”、“开始加密私钥”)
- ssh.com 格式(“开始 SSH2 加密私钥”)
- OpenSSH 密钥格式(“开始 OPENSSH 私钥”)
- DSA 中
- OpenSSL 传统 PEM 格式(“BEGIN DSA PRIVATE KEY”)
- OpenSSL PKCS#8 PEM 格式(“开始私钥”、“开始加密私钥”)
- ssh.com 格式(“开始 SSH2 加密私钥”)
- ECDSA 256/384/521 英寸
- OpenSSL 传统 PEM 格式(“BEGIN EC PRIVATE KEY”)
- OpenSSL PKCS#8 PEM 格式(“开始私钥”、“开始加密私钥”)
- OpenSSH 密钥格式(“开始 OPENSSH 私钥”)
- ED25519 在
- OpenSSL PKCS#8 PEM 格式(“开始私钥”、“开始加密私钥”)
- OpenSSH 密钥格式(“开始 OPENSSH 私钥”)
OpenSSL 传统 PEM 格式的私钥可以使用以下密码方法之一进行加密:
- DES-EDE3-CBC
- DES-EDE3-CFB
- DES-CBC
- AES-128-CBC
- AES-192-CBC
- AES-256-CBC
OpenSSL PKCS#8 PEM 格式的私钥可以使用 BouncyCastle 支持的任何密码方法进行加密。
ssh.com 格式的私钥可以使用以下密码方法之一进行加密:
OpenSSH 密钥格式的私钥可以使用以下密码方法之一进行加密:
- 3des-CBC
- aes128-CBC
- aes192-CBC
- aes256-CBC
- aes128-ctr
- aes192-ctr
- aes256-ctr
- aes128-gcm @openssh.com
- aes256-gcm @openssh.com
- Chacha20-poly1305 @openssh.com
主机密钥算法
SSH.NET支持以下主机密钥算法:
- ssh-ed25519
- ECDSA-SHA2-NISTP256
- ECDSA-SHA2-Nistp384
- ECDSA-SHA2-nistp521
- rsa-sha2-512
- rsa-sha2-256
- SSH-RSA
- ssh-DSS
消息验证码
SSH.NET支持以下MAC算法:
- hmac-sha2-256
- hmac-sha2-512
- hmac-sha1
- hmac-sha2-256-etm @openssh.com
- hmac-sha2-512-etm @openssh.com
- hmac-sha1-etm @openssh.com
压缩
SSH.NET支持以下压缩算法:
框架支持
SSH.NET支持以下目标框架:
- .NETFramework 4.6.2(及更高版本)
- .NET 标准 2.0 和 2.1
- .NET 6(及更高版本)
建设图书馆
除了最新的 .NET SDK 之外,该库没有特殊的构建要求。另请参阅 CONTRIBUTING.md。
支持SSH.NET
您或您的公司在您的项目中依赖SSH.NET吗?如果您想鼓励我们继续前进并向我们表明您欣赏我们的工作,请考虑通过 GitHub Sponsors 成为赞助商。