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 成為贊助商。