SSH.NET
SSH.NET é uma biblioteca Secure Shell (SSH-2) para .NET, otimizada para paralelismo.
Principais recursos
- Execução do comando SSH usando métodos síncronos e assíncronos
- Funcionalidade SFTP para operações síncronas e assíncronas
- Funcionalidade SCP
- Encaminhamento de porta remoto, dinâmico e local
- Implementação interativa de shell/terminal
- Autenticação via chave pública, senha e métodos interativos de teclado, incluindo multifator
- Conexão via SOCKS4, SOCKS5 ou proxy HTTP
Como usar
Execute um comando
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"
}
Carregar e listar arquivos usando 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 } " ) ;
}
}
Tipos principais
Os principais tipos fornecidos por esta biblioteca são:
- Renci.SshNet.SshClient
- Renci.SshNet.SftpClient
- Renci.SshNet.ScpClient
- Renci.SshNet.PrivateKeyFile
- Renci.SshNet.SshCommand
- Renci.SshNet.ShellStream
Documentação Adicional
- Outros exemplos
- Navegador de API
Métodos de criptografia
SSH.NET oferece suporte aos seguintes métodos de criptografia:
- 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
Métodos de troca de chaves
SSH.NET oferece suporte aos seguintes métodos de troca de chaves:
- curva25519-sha256
- curva25519-sha256 @libssh.org
- ecdh-sha2-nistp256
- ecdh-sha2-nistp384
- ecdh-sha2-nistp521
- diffie-hellman-group-exchange-sha256
- diffie-hellman-group-exchange-sha1
- diffie-hellman-group16-sha512
- diffie-hellman-group14-sha256
- diffie-hellman-group14-sha1
- diffie-hellman-group1-sha1
Autenticação de chave pública
SSH.NET oferece suporte aos seguintes formatos de chave privada:
- RSA em
- Formato PEM tradicional OpenSSL ("BEGIN RSA PRIVATE KEY")
- Formato OpenSSL PKCS#8 PEM ("BEGIN PRIVATE KEY", "BEGIN ENCRYPTED PRIVATE KEY")
- Formato ssh.com ("BEGIN SSH2 ENCRYPTED PRIVATE KEY")
- Formato de chave OpenSSH ("BEGIN OPENSSH PRIVATE KEY")
- DSA em
- Formato PEM tradicional OpenSSL ("BEGIN DSA PRIVATE KEY")
- Formato OpenSSL PKCS#8 PEM ("BEGIN PRIVATE KEY", "BEGIN ENCRYPTED PRIVATE KEY")
- Formato ssh.com ("BEGIN SSH2 ENCRYPTED PRIVATE KEY")
- ECDSA 256/384/521 em
- Formato PEM tradicional OpenSSL ("BEGIN EC PRIVATE KEY")
- Formato OpenSSL PKCS#8 PEM ("BEGIN PRIVATE KEY", "BEGIN ENCRYPTED PRIVATE KEY")
- Formato de chave OpenSSH ("BEGIN OPENSSH PRIVATE KEY")
- ED25519 em
- Formato OpenSSL PKCS#8 PEM ("BEGIN PRIVATE KEY", "BEGIN ENCRYPTED PRIVATE KEY")
- Formato de chave OpenSSH ("BEGIN OPENSSH PRIVATE KEY")
As chaves privadas no formato PEM tradicional do OpenSSL podem ser criptografadas usando um dos seguintes métodos de criptografia:
- DES-EDE3-CBC
- DES-EDE3-CFB
- DES-CBC
- AES-128-CBC
- AES-192-CBC
- AES-256-CBC
As chaves privadas no formato OpenSSL PKCS#8 PEM podem ser criptografadas usando qualquer método de criptografia compatível com o BouncyCastle.
As chaves privadas no formato ssh.com podem ser criptografadas usando um dos seguintes métodos de criptografia:
As chaves privadas no formato de chave OpenSSH podem ser criptografadas usando um dos seguintes métodos de criptografia:
- 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
Algoritmos de chave de host
SSH.NET oferece suporte aos seguintes algoritmos de chave de host:
- ssh-ed25519
- ecdsa-sha2-nistp256
- ecdsa-sha2-nistp384
- ecdsa-sha2-nistp521
- rsa-sha2-512
- rsa-sha2-256
- ssh-rsa
- ssh-dss
Código de autenticação de mensagem
SSH.NET oferece suporte aos seguintes algoritmos 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
Compressão
SSH.NET oferece suporte aos seguintes algoritmos de compactação:
- nenhum (padrão)
- zlib @openssh.com
Suporte de estrutura
SSH.NET oferece suporte às seguintes estruturas de destino:
- .NETFramework 4.6.2 (e superior)
- .NET Padrão 2.0 e 2.1
- .NET 6 (e superior)
Construindo a biblioteca
A biblioteca não possui requisitos especiais para construção, exceto um SDK .NET atualizado. Veja também CONTRIBUTING.md.
Suporte a SSH.NET
Você ou sua empresa contam com SSH.NET em seus projetos? Se você quiser nos encorajar a continuar e mostrar que aprecia nosso trabalho, considere se tornar um patrocinador por meio do GitHub Sponsors.