mirror of
https://github.com/sshnet/SSH.NET.git
synced 2026-09-11 01:36:39 +00:00
124 lines
4.7 KiB
Markdown
124 lines
4.7 KiB
Markdown
SSH.NET
|
|
=======
|
|
SSH.NET is a Secure Shell (SSH-2) library for .NET, optimized for parallelism.
|
|
|
|
[](https://www.nuget.org/packages/SSH.NET)
|
|
[](https://www.nuget.org/packages/SSH.NET)
|
|
[](https://ci.appveyor.com/api/projects/status/ih77qu6tap3o92gu/branch/develop)
|
|
|
|
## 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 Standard 1.3
|
|
* Silverlight 4
|
|
* Silverlight 5
|
|
* Windows Phone 7.1
|
|
* Windows Phone 8.0
|
|
* Universal Windows Platform 10
|
|
|
|
## Usage
|
|
|
|
### Multi-factor authentication
|
|
|
|
Establish a SFTP connection using both password and public-key authentication:
|
|
|
|
```cs
|
|
var connectionInfo = new ConnectionInfo("sftp.foo.com",
|
|
"guest",
|
|
new PasswordAuthenticationMethod("guest", "pwd"),
|
|
new PrivateKeyAuthenticationMethod("rsa.key"));
|
|
using (var client = new SftpClient(connectionInfo))
|
|
{
|
|
client.Connect();
|
|
}
|
|
|
|
```
|
|
|
|
### Verify host identify
|
|
|
|
Establish a SSH connection using user name and password, and reject the connection if the fingerprint of the server does not match the expected fingerprint:
|
|
|
|
```cs
|
|
byte[] expectedFingerPrint = new byte[] {
|
|
0x66, 0x31, 0xaf, 0x00, 0x54, 0xb9, 0x87, 0x31,
|
|
0xff, 0x58, 0x1c, 0x31, 0xb1, 0xa2, 0x4c, 0x6b
|
|
};
|
|
|
|
using (var client = new SshClient("sftp.foo.com", "guest", "pwd"))
|
|
{
|
|
client.HostKeyReceived += (sender, e) =>
|
|
{
|
|
if (expectedFingerPrint.Length == e.FingerPrint.Length)
|
|
{
|
|
for (var i = 0; i < expectedFingerPrint.Length; i++)
|
|
{
|
|
if (expectedFingerPrint[i] != e.FingerPrint[i])
|
|
{
|
|
e.CanTrust = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
e.CanTrust = false;
|
|
}
|
|
};
|
|
client.Connect();
|
|
}
|
|
```
|
|
|
|
## 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
|
|
Visual Studio 2017 | | x | x | | | | |
|
|
|
|
[](http://ndepend.com)
|