SSH.NET
SSH.NET est une bibliothèque Secure Shell (SSH-2) pour .NET, optimisée pour le parallélisme.
Principales fonctionnalités
- Exécution de la commande SSH à l'aide de méthodes synchrones et asynchrones
- Fonctionnalité SFTP pour les opérations synchrones et asynchrones
- Fonctionnalité SCP
- Redirection de port distante, dynamique et locale
- Implémentation d'un shell/terminal interactif
- Authentification via des méthodes de clé publique, de mot de passe et de clavier interactif, y compris multifacteur
- Connexion via SOCKS4, SOCKS5 ou proxy HTTP
Comment utiliser
Exécuter une commande
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"
}
Télécharger et lister des fichiers à l'aide de 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 } " ) ;
}
}
Types principaux
Les principaux types fournis par cette bibliothèque sont :
- Renci.SshNet.SshClient
- Renci.SshNet.SftpClient
- Renci.SshNet.ScpClient
- Renci.SshNet.PrivateKeyFile
- Renci.SshNet.SshCommand
- Renci.SshNet.ShellStream
Documentation supplémentaire
- Autres exemples
- Navigateur API
Méthodes de cryptage
SSH.NET prend en charge les méthodes de chiffrement suivantes :
- 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éthodes d'échange de clés
SSH.NET prend en charge les méthodes d'échange de clés suivantes :
- courbe25519-sha256
- courbe25519-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
Authentification par clé publique
SSH.NET prend en charge les formats de clé privée suivants :
- RSA en
- Format PEM traditionnel OpenSSL (« BEGIN RSA PRIVATE KEY »)
- Format PEM OpenSSL PKCS#8 ("BEGIN PRIVATE KEY", "BEGIN ENCRYPTED PRIVATE KEY")
- Format ssh.com ("BEGIN SSH2 ENCRYPTED PRIVATE KEY")
- Format de clé OpenSSH ("BEGIN OPENSSH PRIVATE KEY")
- DSA dans
- Format PEM traditionnel OpenSSL (« BEGIN DSA PRIVATE KEY »)
- Format PEM OpenSSL PKCS#8 ("BEGIN PRIVATE KEY", "BEGIN ENCRYPTED PRIVATE KEY")
- Format ssh.com ("BEGIN SSH2 ENCRYPTED PRIVATE KEY")
- ECDSA 256/384/521 pouces
- Format PEM traditionnel OpenSSL ("BEGIN EC PRIVATE KEY")
- Format PEM OpenSSL PKCS#8 ("BEGIN PRIVATE KEY", "BEGIN ENCRYPTED PRIVATE KEY")
- Format de clé OpenSSH ("BEGIN OPENSSH PRIVATE KEY")
- ED25519 dans
- Format PEM OpenSSL PKCS#8 ("BEGIN PRIVATE KEY", "BEGIN ENCRYPTED PRIVATE KEY")
- Format de clé OpenSSH ("BEGIN OPENSSH PRIVATE KEY")
Les clés privées au format PEM traditionnel OpenSSL peuvent être chiffrées à l'aide de l'une des méthodes de chiffrement suivantes :
- DES-EDE3-CBC
- DES-EDE3-CFB
- DES-CBC
- AES-128-CBC
- AES-192-CBC
- AES-256-CBC
Les clés privées au format OpenSSL PKCS#8 PEM peuvent être chiffrées à l'aide de n'importe quelle méthode de chiffrement prise en charge par BouncyCastle.
Les clés privées au format ssh.com peuvent être chiffrées à l'aide de l'une des méthodes de chiffrement suivantes :
Les clés privées au format de clé OpenSSH peuvent être chiffrées à l'aide de l'une des méthodes de chiffrement suivantes :
- 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
Algorithmes de clé hôte
SSH.NET prend en charge les algorithmes de clé d'hôte suivants :
- ssh-ed25519
- ecdsa-sha2-nistp256
- ecdsa-sha2-nistp384
- ecdsa-sha2-nistp521
- rsa-sha2-512
- rsa-sha2-256
- ssh-rsa
- ssh-dss
Code d'authentification des messages
SSH.NET prend en charge les algorithmes MAC suivants :
- 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
Compression
SSH.NET prend en charge les algorithmes de compression suivants :
- aucun (par défaut)
- zlib @openssh.com
Prise en charge du cadre
SSH.NET prend en charge les frameworks cibles suivants :
- .NETFramework 4.6.2 (et supérieur)
- .NET Standard 2.0 et 2.1
- .NET 6 (et supérieur)
Construire la bibliothèque
La bibliothèque n’a aucune exigence particulière à construire, autre qu’un SDK .NET à jour. Voir également CONTRIBUTION.md.
Prise en charge de SSH.NET
Vous ou votre entreprise comptez sur SSH.NET dans vos projets ? Si vous souhaitez nous encourager à continuer et nous montrer que vous appréciez notre travail, envisagez de devenir sponsor via GitHub Sponsors.