SSH.NET is a Secure Shell (SSH) library for .NET, optimized for parallelism.
##Introduction This project was inspired by Sharp.SSH library which was ported from java and it seems like was not supported for quite some time. This library is a complete rewrite, without any third party dependencies, using parallelism to achieve the best performance possible.
##Features
- Execution of SSH command using both synchronous and asynchronous methods
- Return command execution exit status and other information
- Provide SFTP functionality for both synchronous and asynchronous operations
- Provides SCP functionality
- Provide status report for upload and download sftp operations to allow accurate progress bar implementation
- Remote, dynamic and local port forwarding
- Shell/Terminal implementation
- Specify key file pass phrase
- Use multiple key files to authenticate
- Supports 3des-cbc, aes128-cbc, aes192-cbc, aes256-cbc, aes128-ctr, aes192-ctr, aes256-ctr, blowfish-cbc, cast128-cbc, arcfour and twofish encryptions
- Supports publickey, password and keyboard-interactive authentication methods
- Supports RSA and DSA private key
- Supports DES-EDE3-CBC, DES-EDE3-CFB, DES-CBC, AES-128-CBC, AES-192-CBC and AES-256-CBC algorithms for private key encryption
- Supports two-factor or higher authentication
- Supports SOCKS4, SOCKS5 and HTTP Proxy
##Key Exchange Method
SSH.NET supports the following key exchange methods:
- diffie-hellman-group-exchange-sha256
- diffie-hellman-group-exchange-sha1
- diffie-hellman-group14-sha1
- diffie-hellman-group1-sha1
##Message Authentication Code
SSH.NET supports the following MAC algorithms:
- hmac-md5
- hmac-md5-96
- hmac-sha1
- hmac-sha1-96
- hmac-sha2-256
- hmac-sha2-256-96
- hmac-sha2-512
- hmac-sha2-512-96
- hmac-ripemd160
- [email protected]
##Framework Support SSH.NET supports the following target frameworks:
- .NET Framework 3.5
- .NET Framework 4.0
- Silverlight 4
- Silverlight 5
- Windows Phone 7.1
- Windows Phone 8.0
- Universal Windows Platform 10
In our codebase, we use the following conditional compilation symbols to identity features supported by a given target framework:
Symbol | Description |
---|---|
FEATURE_ENCODING_ASCII | Encoding.ASCII is available |
FEATURE_BINARY_SERIALIZATION | Binary serialization is supported. |
FEATURE_DIAGNOSTICS_TRACESOURCE | TraceSource is available |
FEATURE_DIRECTORYINFO_ENUMERATEFILES | DirectoryInfo.EnumerationFiles(string) is available |
FEATURE_RNG_CSP | RandomNumberGenerator can be created using default ctor of RNGCryptoServiceProvider |
FEATURE_RNG_CREATE | RandomNumberGenerator can be created using static Create method on RandomNumberGenerator |
FEATURE_HASH_MD5 | |
FEATURE_HASH_SHA1_CREATE | |
FEATURE_HASH_SHA1_MANAGED | |
FEATURE_HASH_SHA256_CREATE | |
FEATURE_HASH_SHA256_MANAGED | |
FEATURE_HASH_SHA384_CREATE | |
FEATURE_HASH_SHA384_MANAGED | |
FEATURE_HASH_SHA512_CREATE | |
FEATURE_HASH_SHA512_MANAGED | |
FEATURE_HASH_RIPEMD160_CREATE | |
FEATURE_HASH_RIPEMD160_MANAGED | |
FEATURE_HMAC_MD5 | |
FEATURE_HMAC_SHA1 | |
FEATURE_HMAC_SHA256 | |
FEATURE_HMAC_SHA384 | |
FEATURE_HMAC_SHA512 | |
FEATURE_HMAC_RIPEMD160 | |
FEATURE_THREAD_SLEEP | Current thread can be suspended using static Sleep method on Thread class |
FEATURE_THREAD_TAP | Task-based Asynchronous Pattern is supported |
FEATURE_THREAD_THREADPOOL | ThreadPool is supported |
FEATURE_MEMORYSTREAM_GETBUFFER | MemoryStream features a GetBuffer() method which allows access to the byte array from which this stream was created, or the underlying array |
FEATURE_MEMORYSTREAM_TRYGETBUFFER | MemoryStream features a TryGetBuffer(out ArraySegment) method which allows access to the byte array from which this stream was created, or the underlying array |
FEATURE_STREAM_TAP | Stream supports Task-based Asynchronous Pattern (TAP) |
FEATURE_STREAM_APM | Stream supports Asynchronous Programming Model (APM) |
FEATURE_SOCKET_TAP | Socket supports Task-based Asynchronous Pattern (TAP) |
FEATURE_SOCKET_EAP | Socket supports Event-based Asynchronous Pattern (EAP) |
FEATURE_SOCKET_APM | Socket supports Asynchronous Programming Model (APM) |
FEATURE_SOCKET_SYNC | Socket supports synchronous execution |
FEATURE_SOCKET_POLL | Socket features a Poll(Int32,SelectMode) method |
FEATURE_DNS_TAP | Dns supports Task-based Asynchronous Pattern (TAP) |
FEATURE_DNS_APM | Dns supports Asynchronous Programming Model (APM) |
FEATURE_DNS_SYNC | Dns supports synchronous execution |
FEATURE_REFLECTION_TYPEINFO |
##Building SSH.NET
Software | .NET 3.5 | .NET 4.0 | SL 4 | SL 5 | WP 71 | WP 80 | UAP10 |
---|---|---|---|---|---|---|---|
Windows Phone SDK 8.0 | x | x | x | x | |||
Visual Studio 2012 Update 5 | x | x | x | x | x | x | |
Visual Studio 2015 Update 2 | x | x | x | x | x |