Skip to content

Latest commit

History

1,234 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SSH.NET

SSH.NET is a Secure Shell (SSH-2) library for .NET, optimized for parallelism.

VersionNuGet download countBuild status

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:

varconnectionInfo=newConnectionInfo("sftp.foo.com","guest",newPasswordAuthenticationMethod("guest","pwd"),newPrivateKeyAuthenticationMethod("rsa.key"));using(varclient=newSftpClient(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:

byte[]expectedFingerPrint=newbyte[]{0x66,0x31,0xaf,0x00,0x54,0xb9,0x87,0x31,0xff,0x58,0x1c,0x31,0xb1,0xa2,0x4c,0x6b};using(varclient=newSshClient("sftp.foo.com","guest","pwd")){client.HostKeyReceived+=(sender,e)=>{if(expectedFingerPrint.Length==e.FingerPrint.Length){for(vari=0;i<expectedFingerPrint.Length;i++){if(expectedFingerPrint[i]!=e.FingerPrint[i]){e.CanTrust=false;break;}}}else{e.CanTrust=false;}};client.Connect();}

Building SSH.NET

Softwarenet35net40netstandard1.3sl4sl5wp71wp8uap10.0
Windows Phone SDK 8.0xxxx
Visual Studio 2012 Update 5xxxxxx
Visual Studio 2015 Update 3xxxxx
Visual Studio 2017xx

NDepend

About

I created this fork of SSH.NET with the hope of contributing ED25519 support to SSH.NET. However, someone else was doing the same and was a little ahead of me. Still, they were able to cherry pick some commits from here for his PR (parsing an encrypted openssh v1 key).

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages