SSH.NET
SSH.NET — это библиотека Secure Shell (SSH-2) для .NET, оптимизированная для параллелизма.
Ключевые особенности
- Выполнение команды SSH как синхронными, так и асинхронными методами.
- Функциональность SFTP как для синхронных, так и для асинхронных операций.
- Функциональность SCP
- Удаленная, динамическая и локальная переадресация портов
- Интерактивная реализация оболочки/терминала
- Аутентификация с помощью открытого ключа, пароля и интерактивных методов с помощью клавиатуры, включая многофакторную
- Подключение через 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 } " ) ;
}
}
Основные типы
Основные типы, предоставляемые этой библиотекой:
- Ренци.SshNet.SshClient
- Ренци.SshNet.SftpClient
- Ренци.SshNet.ScpClient
- Renci.SshNet.PrivateKeyFile
- Ренци.SshNet.SshCommand
- Ренци.SshNet.ShellStream
Дополнительная документация
- Дальнейшие примеры
- API-браузер
Методы шифрования
SSH.NET поддерживает следующие методы шифрования:
- aes128-ctr
- aes192-ctr
- aes256-ctr
- aes128-gcm @openssh.com
- aes256-gcm @openssh.com
- чача20-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
- Диффи-Хеллман-группа16-sha512
- Диффи-Хеллман-группа14-sha256
- Диффи-Хеллман-группа14-sha1
- Диффи-Хеллман-группа1-sha1
Аутентификация с открытым ключом
SSH.NET поддерживает следующие форматы закрытых ключей:
- RSA в
- Традиционный формат OpenSSL PEM («BEGIN RSA PRIVATE KEY»)
- Формат OpenSSL PKCS#8 PEM («НАЧАТЬ ЧАСТНЫЙ КЛЮЧ», «НАЧАТЬ ЗАШИФРОВАННЫЙ ЧАСТНЫЙ КЛЮЧ»)
- Формат ssh.com («НАЧАТЬ ЗАШИФРОВАННЫЙ ЧАСТНЫЙ КЛЮЧ SSH2»)
- Формат ключа OpenSSH («BEGIN OPENSSH PRIVATE KEY»)
- ДСА в
- Традиционный формат 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 («BEGIN OPENSSH PRIVATE KEY»)
- ED25519 в
- Формат OpenSSL PKCS#8 PEM («НАЧАТЬ ЧАСТНЫЙ КЛЮЧ», «НАЧАТЬ ЗАШИФРОВАННЫЙ ЧАСТНЫЙ КЛЮЧ»)
- Формат ключа OpenSSH («BEGIN OPENSSH PRIVATE KEY»)
Закрытые ключи в традиционном формате PEM OpenSSL можно зашифровать с помощью одного из следующих методов шифрования:
- 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
- чача20-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 поддерживает следующие алгоритмы сжатия:
- нет (по умолчанию)
- zlib @openssh.com
Поддержка платформы
SSH.NET поддерживает следующие целевые платформы:
- .NETFramework 4.6.2 (и выше)
- .NET Стандарт 2.0 и 2.1
- .NET 6 (и выше)
Строительство библиотеки
Для сборки библиотеки не требуется никаких особых требований, кроме актуального пакета SDK для .NET. См. также CONTRIBUTING.md.
Поддержка SSH.NET
Используете ли вы или ваша компания SSH.NET в своих проектах? Если вы хотите побудить нас продолжать работу и показать, что вы цените нашу работу, рассмотрите возможность стать спонсором через GitHub Sponsors.