mirror of
https://github.com/sshnet/SSH.NET.git
synced 2026-09-11 21:49:06 +00:00
5529efcab80d739b1596183689e0dde2b3fd19a3
Reduces - but does not eliminate - likelyhood of race condition when remote server and client attempt to disconnect at the same time. Currently this leads to a NRE or ObjectDisposedException in Session.IsSocketConnected(ref bool isConnected) when one thread is attempting to check whether the socket is still connected, and the other thread is disposing the socket. This commit just reduces the likelyhood as the message loop thread that handes the SSH_MSG_DISCONNECT sent by the server will no longer attempt to send a SSH_MSG_DISCONNECT to the server, and as such will not check whether the socket is still connected.
SSH.NET
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
- hmac-ripemd160@openssh.com
##Framework Support SSH.NET supports the following target frameworks:
- .NET Framework 3.5
- .NET Framework 4.0 (and higher)
- .NET Platform Standard 1.3
- Silverlight 4
- Silverlight 5
- Windows Phone 7.1
- Windows Phone 8.0
- Universal Windows Platform 10
##Building SSH.NET
| Software | net35 | net40 | netstandard1.3 | sl4 | sl5 | wp71 | wp8 | uap10.0 |
|---|---|---|---|---|---|---|---|---|
| Windows Phone SDK 8.0 | x | x | x | x | ||||
| Visual Studio 2012 Update 5 | x | x | x | x | x | x | ||
| Visual Studio 2015 Update 3 | x | x | x | x | x | x |
Languages
C#
99.9%