PowerTCP SSH and SFTP for .NET
from $349.00Available Platforms
Advanced SSH and SFTP Components
PowerTCP SSH and SFTP for .NET is designed to offer the most advanced, easy to use SSHv2 and SFTPv3 components available. Requires fewer resources, provides more flexibility, and elicits code that is easier to re-use and maintain.
- Model-View-Controller (MVC) design means fewer resources, more flexibility, and code that is easy to maintain
- Includes COM Interfaces for use in COM environments, such as VB6
- Supports concurrent sessions on multiple worker threads
- Code examples and sample projects demonstrate typical uses
Sftp sftp1 = new Sftp();
sftp1.Connection.RemoteEndPoint.HostNameOrAddress = "mySFtpServer.com";
sftp1.Connect();
SshLoginData loginDetails = new SshLoginData();
loginDetails.Username = "myUsername";
loginDetails.Password = "myPassword";
sftp1.Authenticate(loginDetails);
sftp1.Get("myFile.txt", "c:\\MyFiles\\myFile.txt", CopyMode.Copy);
sftp1.Close();
Feature Overview
Security
- New Elliptic Curve Diffie-Hellman key exchange and Elliptic Curve Digital Signature host keys, for enhanced security
- New Diffie-Hellman key exchange algorithm, in addition to ed25519, RSA, and, DSA server host key algorithms, for broad compatibility
- SSH transport compression, substantially increasing transfer rates for compressible data
- Public key authentication
- Encryption algorithms include: aes128-cbc, 3des-cbc, aes192-cbc, aes256-cbc, aes128-ctr, 3des-ctr, aes192-ctr, and aes256-ctr
- HMAC hashing algorithms include: hmac-sha2-512, hmac-sha2-256, hmac-sha1, hmac-sha1-96, hmac-md5, and hmac-md5-96
SSH File Transfer Protocol Feature Preview (SFTP Version 3)
- Upload, download and delete files
- Listings are parsed automatically
- Create and delete directories
- Wildcard support for multi-file transfers (mput and mget)
- Cancel and restart transfers
- Pipelining techniques improve performance
- Supports multi-threaded concurrent file transfers (when supported by server)
Flexibility and Ease-of-use
- Progress event reports transfer rate and advancement
- Synchronous and asynchronous operation modes
- Multiple sessions over a single connection
- HTTP CONNECT Proxy Support
- 100% C# managed code
- Includes sample projects in; C#, VB.NET, and VB6
Looking for an FTP/FTPS (SSL) Product?
Included with PowerTCP SSH and SFTP for .NET
- Two Components plus several Major Classes
- Sample projects written in C#, VB.NET, VB6
- Comprehensive MS Help 2.0 and MS Help Viewer integrated documentation
- Free Introductory Support.
Component | Description |
---|---|
Sftp Component | Represents an SFTP client session over an SSH-2 connection. |
Ssh Component | Represents an online client session over an SSH-2 connection. |
Supported Environments
PowerTCP for .NET components and classes will operate on any Microsoft operating system that fully supports the Microsoft .NET Framework, including 64-bit Windows. .NET components are dependent on the Framework rather than a specific operating system. Products support .NET Framework versions 2.0 through 4.8 and .NET Standard 2.0 (.NET Core, .NET 5, .NET 6, .NET 7, etc.).
The components can be used with any .NET compliant language, including the following languages:
Supported languages*:
- C#
- VB.NET
- Managed C++
Tested in the following application environments:
- Standard Windows desktop applications
- Console applications
- ASP.NET web applications and Web Sites
- Windows service applications
- Web service applications
Tested in the following development environments:
- Visual Studio .NET (2005, 2008, 2010, 2012, 2013, 2015, 2017, 2019, 2022)
- C# Builder
- Visual Basic 6
*In addition to the languages above, the SSH and SFTP components include a COM interface, permitting use in environments that support COM, such as VB6.
New sample projects for PowerTCP SSH and SFTP for .NET have been added to include .NET Core 2.0 projects, referencing the Dart.Ssh.Standard.dll. Look for the to identify these samples.
Code Examples
These code snippets can be copied and pasted into your project.
Code Snippet | Description |
---|---|
Get A File | Demonstrates how to download a file. |
Put A File | Demonstrates how to upload a file. |
Get Multiple Files | Demonstrates how to download multiple files with minimal code. |
Receive and Display Data | Demonstrates how to receive and display data. |
Example Projects Included
The samples are fully working applications demonstrating PowerTCP SSH and SFTP for .NET components in C#, VB.NET, and VB6. All samples include source code.
.NET Sample Name | Description |
---|---|
MPut Demo | Demonstrates how to store multiple files and folders from a local directory to an SFTP server using a wildcard expression. |
MGet Demo | Demonstrates how to retrieve multiple files and folders from an SFTP server to a local directory using a wildcard expression. |
SFTP Client | Demonstrates a full SFTP client, including storing and retrieving files, sending commands, and retrieving listings. |
SSH Client | Demonstrates a fully interactive, multiple-session SSH client. |
SFTP WCF Service | Demonstrates downloading a file using a Windows Communication Foundation (WCF) service application. Includes example consumer app. |
SSH with VT Client | Demonstrates a fully interactive SSH client that also uses the Emulation for .NET product for VT emulation. |
SFTP Client Console | Demonstrates retrieving a file in a simple single-thread console application. |
SSH Client Console | Demonstrates an SSH client in a console application. |
Samples using the exposed COM interface:
VB6 Sample Name | Description |
---|---|
Automated Client | Demonstrates execution of a simple blocking script. |
SFTP Client | Demonstrates a full SFTP client, including storing and retrieving files, sending commands, and retrieving listings. |
SSH Client | Demonstrates a fully interactive, multiple-session SSH client. |
Product Release History for PowerTCP SSH and SFTP for .NET
The following is a list of public releases for all components shipped with PowerTCP SSH and SFTP for .NET (Latest Release 2023-11-30)
PowerTCP SSH and SFTP for .NET
Current Version: 7.0.1.0
7.0.1.0 Released: 2023-11-30
Changes in this release:
- To more accurately reflect property functionality; Optimizations.ReadAheadBuffers has been marked obsolete and Optomizations.ReadBuffers added to replace it.
- Both Optimizations.ReadAheadBuffers and Optimizations.ReadBuffers have been clamped to a minimum value of 1.
- An ArgumentOutOfRangeException will be thrown if a value less than 1 is provided to Optimizations.ReadBuffers.
Fixes in this release:
- Resolved an issue where a file downloaded would be 0 bytes long if Sftp.Optimizations.ReadAheadBuffers was set to 0.
7.0.0.3 Released: 2023-10-18
Changes in this release:
- Licensing has been refactored. Please review documentation here.
- .NET Framework 4.5+ is now required as support for .NET Framework 3.5 has been deprecated. (Please contact sales@dart.com an assembly for a previous version of .NET Framework is needed.)
- Improved Visual Studio Integration.
- Full support for .NET 6 and .NET 7.
- (COM) The License object has been renamed to ComLicense.
- (COM) Licensing for COM has changed. Please review documentation here.
- Refactored internal packet queueing resulting in a modest performance increase and less network traffic.
- Dart.Ssh.Standard.dll has been renamed to Dart.Ssh.dll.
New Features in this release:
- Support for RSA-SHA2-256 and RSA-SHA2-512 host key algorithms has been added.
- Support for the ssh-ed25519 host key algorithm has been added.
Fixes in this release:
- An issue where some KEX and Host Key algorithms were not available under some .NET Frameworks has been resolved.
- An issue where re-keying would fail if compression was being used has been fixed. (1134)
- An issue where the StateChanged event did not fire directly after TCP connect has been fixed. (1135)
- An issue where an incorrect timeout exception would be thrown during KEX negotiation has been fixed and the correct exception will now be thrown. (1136)
4.10.5.0 Released: 2020-12-03
- Fixed a minor compatibility issue so that Dart.Ssh.Standard.dll can be used with .NET 5.0.
4.10.3.1 Released: 2018-09-04
- The following hash algorithms have been added: hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com
4.10.2.0 Released: 2018-07-11
Product fixes in this release:
- Files will now be truncated at their current size when a transfer completes regardless of the file size reported by the server. (1047)
4.10.1.4 Released: 2018-06-21
- Added support for .NET Standard 2.0 and .NET Core 2.0
- New .NET Core 2.0 sample projects, referencing the Dart.Ssh.Standard.dll
- Updated trial license operation for use on .NET Standard-compatible platforms
- Details regarding trial operation for Dart.Ssh.Standard.dll can be found in the Licensing and Trial Operation topic in the included help documentation
Product fixes in this release:
- Resolved an issue where the component would wait until a timeout expired before returning data. Data is now returned as soon as it is available. (1037)
- SessionStream.CanTimeout now returns the correct value. (1038)
- An issue where the component could crash VB6 if no license was present has been resolved. (1039)
4.10.0.1 Released: 2017-04-20
- Added support for the Elliptic Curve Diffie Hellman key exchange algorithms NIST P-256, NIST P-384, and NIST P-521.
- Added support for the Elliptic Curve digital signature server hostkey algorithms NIST P-256, NIST P-384, and NIST P-521.
- Added support to public key authentication for SSH.com/SSH2-formatted private keys.
- Unified and normalized *nix path manipulation and *nix <> Windows path conversion with the new static UnixPath class.
4.9.2.1 Released: 2017-03-08
- Visual Studio 2017 compatibility.
Product fixes in this release:
- A race condition that could result in multi-factor authentication failing has been addressed. (985)
4.9.1.0 Released: 2016-11-16
- Reduced the number of threads required for multiple asynchronous transfers resulting in increased transfer rates and better performance.
- All cryptography classes are now chosen using reflection so the most secure .NET Framework cryptography classes will be used for the targeted .NET Framework.
- The KexExchangeAlgorithms property has been added to the Connection class to allow for the modification of kex algorithms to be presented during connection negotiation.
- Enhanced FIPs support; cryptographic handshake lists now list the strongest available cryptography algorithms as determined by the targeted .NET Framework.
Developer Note: The Optimizations.WriteAheadBuffers property has been deprecated as refinements to our SFTP packet handling algorithms have rendered it obsolete.
4.9.0.0 Released: 2016-09-07
- Support for multiple concurrent file transfers over a single SFTP connection when supported by the server. OpenSsh and BitVise support multiple concurrent uploads, multiple concurrent downloads, and concurrent uploads and downloads at the same time; other servers may be less robust.
- Up to a 50% increase in transfer speed.
- Introduced support for standard SSH compression and OpenSsh's "zlib@openssh.com" compression implementation.
- Improved handling of invalid filename characters when transferring files from a non-Windows server to a windows client.
- Introduced support for the diffie-hellman-group-exchange-sha256 key exchange algorithm.
4.8.1.0 Released: 2016-04-08
Product fixes in this release:
- A compatibility issue with some servers which results in the key exchange failing when using hmac-sha2-512 as the MAC algorithm and diffie-helman-group-exchange-sha1 as the KEX algorithm has been resolved. (865)
4.8.0.0 Released: 2015-12-18
- Support for hmac-sha2-256 and hmac-sha2-512 MAC algorithms was added.
Product fixes in this release:
- An IsSocket property was added to the SftpFileAttributes class to indicate when a file name corresponds to a network socket. (591)
- Symbolic permissions will now be parsed and displayed correctly. (603)
- Local file handles will always be closed first when a transfer ends or is aborted. (618)
- The Sftp.Progress event will now fire after local file handles are closed when a transfer is aborted. (619)
- The NegotiateException class has been made public. (631)
- Exceptions will no longer be thrown from Sftp.Dispose(). (657)
- An "Unexpected end of sftp stream" exception will no longer be thrown when a transfer is aborted. (664)
- Exceptions now preserve their full callstack when thrown. (681)
- Dart.Ssh.EventArgs has been renamed to Dart.Ssh.BaseEventArgs to avoid a conflict with System.EventArgs. The Ssh.StateChanged and Sftp.StateChanged events will need to be modified to reflect this change. (724)
- Resuming a file transfer now works as expected. (733)
- RemoveResult.RemotePath is now absolute as documented. (735)
4.7.0.0 Released: 2014-09-16
- The Sftp.Optimizations property has been added in order to provide a more cohesive interface and greater control over transfer speed optimizations.
Interface Changes:
- The Sftp.WritePipelining property has been marked obsolete and replaced by the Optimizations.WriteAheadBuffers property and will be removed in the next release.
- The Sftp.ReadAheadBuffers and Sftp.BlockSize properties have been marked obsolete and relocated to the Sftp.Optimizations property.
- IsAuthenticationComplete and IsAuthenticationPartialSuccess methods have been marked obsolete and replaced by the AuthenticationComplete and AuthenticationPartialSuccess properties.
Product fixes in this release:
- Using a wild card to retrieve multiple files from the root directory will no longer result in the first character of every file name to be removed. (423)
- Some server configurations do not allow SSH_FX_APPEND flag to be used when opening a file on the server. The Sftp.Optimizations.UseAppend property was added to control whether the SSH_FX_APPEND flag is used or not. (544)
- AcceptAllHostKeys was added to the COM interface for the Ssh.Connection and Sftp.Connection properties. (564)
4.6.0.9 Released: 2014-03-05
- The SFTP Pipelining implementation has been further refined resulting in faster file transfer performance.
- An automated authentication method has been added that attempts to discern which login method(s) should be used based on server supported authentication methods and credentials available in the LoginData object. Developers should review the documentation for the SshConnection.Authenticate(SshLoginData loginData) method for details.
- The Sftp.WritePipelining property has been added so that SFTP pipelining during write operations can be disabled for high latency situations where write pipelining may saturate the socket resulting in data loss.
Product fixes in this release:
- Previously, the banner event only fired when using the "None" authentication method, it now fires when using any authentication method. Note: Changes in banner event functionality were necessary in order to provide support for all authentication methods. Developers should review the Banner event documentation for new implementation details. (TFS312)
- When downloading multiple files using the wildcard get overload, all invalid filename and path characters are now replaced with a '_' on the local machine. (TFS421)
- An issue where downloading multiple files using the wildcard get overload could result in the first character to be truncated from local file names has been corrected when downloading from the root directory. (TFS423)
4.5.0.3 Released: 2013-09-24
- Improved the default authentication mechanism so that if Login authentication fails Keyboard-Interactive login will be automatically be tried.
- Improved file transfer rate by implementing SFTP Pipelining. The number of buffers to use per transfer is controlled by the Sftp.ReadAheadBuffers property.
4.4.3.6 Released: 2012-10-24
- Updated for Visual Studio 2012 integration and Windows 8 compatibility.
- Trial licensing operation updated.
Product fixes in this release:
- Addressed a globalization issue that prevented correct operation for systems using the following language cultures: Azeri (az), Azeri-Latin (az-Latn), Azeri-Latin-Azerbaijan (az-Latn-AZ), Turkish (tr), Turkish-Turkey (tr-TR) (TFS31)
4.4.2.0 Released: 2012-07-12
Product fixes in this release:
- Fixed a licensing issue with web service applications.
- Updated the title bar of licensing messages to not indicate a product is in trial when it is licensed.
4.4.1.0 Released: 2012-06-27
- Updated trial operation behavior and removed obstacle to using product in .NET Framework 4.5.
4.4.0.10 Released: 2012-04-11
- It is now possible to set the LocalEndPoint when using the Ssh or Sftp components.
- Added an AutoSetTime property to control whether the file's timestamp is updated after a file is uploaded to a server.
- The product is now FIPS-compliant. Only cryprography algorithms that are FIPS-certified are used when a system's security policy requires FIPS algorithms only.
- The Progress event now provides more data, including completion percentage of a file or multi-copy operation.
- This release includes several new samples, including a WCF service sample, a web-based file upload sample (utilizing the PowerWEB File Upload for ASP.NET component), and a VT Emulation sample (utilizing the PowerTCP Emulation for .NET component).
Product fixes in this release:
- Fixed problem connecting to ipSwitch WS_FTP Server with SSH version 7.5. (5367)
- An invalid operation exception is not thrown at the time an invalid working directory is specified. (5369)
- Progress now fires when status is Completed. Progress now fires for folders, not just files. (5463)
- Renamed the Move method to "Rename" to better indicate its use. (5484)
- Progress event is no longer raised twice at the end of a transfer. (5500)
- Addressed null reference exception when no response was provided in the Challenge event handler. (5540)
- Overhauled Connect timeouts. There is now a single parameter for timeout, which covers the connection and key exchange. (5547, 5423)
- Fixed threading synchronization issues that would manifest when multiple components were used in parallel. (5584, 5200)
- VB6 will no longer crash when Sftp.AutoSetTime is true and the server does not permit attributes to be set (issue present in hotfix release only). (5605)
- Fixed issue where occasionally list responses would be missing or have extra data. (5616)
4.3.0.0 Released: 2010-10-13
- PowerTCP SSH and SFTP for .NET 4.x leverages a .NET 2.0+ re-design, filling a gap in the .NET Framework and providing an ease of use for developing a broad spectrum of SSH-2 file transfer and online applications.
- Improved Asynchronous Support uses fewer resources, is more flexible, and produces code that is easier to maintain
- Improved Use of .NET Features including generics and IPv6
- Secure SSH Session and SFTP (SSH File Transfer Protocol) Components
- Username/password and PEM public key authentication
- Encryption/decryption using Triple DES and AES
- Upload, download and delete files; create and remove directories
- Parse listings automatically
- Wildcard support for multi-file transfers (mput and mget)
- Cancel and restart transfers
- Multiple sessions over a single connection
- COM interface for use in COM environments such as VB6
1.0.2.0 Released: 2010-02-12
- A new ReadTimeout property has been added to SessionStream. (4941)
Product fixes in this release:
- Local port forwarding is now supported. (4976)
- The IsActive property is now correctly updated to false when a connection is lost. (4990)
- Transferring a zero byte file no longer results in a divide by zero exception. (5020)
- File size can now be retrieved even when the server does not support file attribute requests. (5032)
- Fixed a PEM certificate parsing error. (5096)
- Fixed a key negotiation issue with Cisco servers. (5135)
- Fixed an issue with overwriting existing during uploading. (5150)
1.0.1.0 Released: 2008-12-24
- An EnableMultipleSessions boolean has been added to the interface. Multiple SFTP sessions can now be disabled for servers that do not support them.
- Product fixes in this release:
- Addressed null reference problem with SshSession.Read call. (4910)
- ATime and MTime values are no longer 5 hours off. (4919)
- Exceptions are now available in XXXCompleted event handlers. (4932)
- Addressed a compatibility issue with Globalscape. Connecting no longer produces a "the subsystem request failed" error message. (4966)
1.0.0.0 Released: 2008-09-15
- PowerTCP SSH and SFTP for .NET Released PowerTCP SSH and SFTP for .NET allows .NET developers to add powerful SSH-2 file transfer and online session capabilities to their applications. With all the features our customers have come to expect, this new product is a perfect companion to our FTP for .NET, Telnet for .NET and Emulation for .NET products.
0.9.0.0 Released: 2008-08-18
-
PowerTCP SSH and SFTP for .NET will be released in September, 2008.
Interested in trying the beta release or being added to the release notification list?
For information, please contact Jamie Powell at jamie.powell@dart.com, or give us a call at 315-339-8040, Monday through Friday, 8:30 a.m. - 5:30 p.m. EST.
PowerTCP SSH and SFTP for .NET Downloads
for .NET Standard 2.0 (supported implementations can be found here), .NET Framework 4.5-4.8, .NET 6.0 and .NET 7.0
Download Windows Installer (product distribution; includes sample projects)
Download Sample projects (only)
- Add a NuGet Reference to your project.
- Open a command line prompt.
- Install the Dart License tool (.NET 6.0 required): dotnet tool install -g dotnet-dartlicense
- Run the Dart License tool and follow the on screen prompts to activate a trial.
SFTP Get Code Example
See all PowerTCP SSH and SFTP for .NET Code Examples
The following example demonstrates an SFTP session, in which a file is downloaded from the server.
Sftp sftp1 = new Sftp();
sftp1.Connection.RemoteEndPoint.HostNameOrAddress = "mySFtpServer.com";
sftp1.Connect();
SshLoginData loginDetails = new SshLoginData();
loginDetails.Username = "myUsername";
loginDetails.Password = "myPassword";
sftp1.Authenticate(loginDetails);
sftp1.Get("myFile.txt", "c:\\MyFiles\\myFile.txt", CopyMode.Copy);
sftp1.Close();
To download a trial please visit the PowerTCP SSH and SFTP for .NET product page.
SFTP Put Code Example
See all PowerTCP SSH and SFTP for .NET Code Examples
The following example demonstrates an SFTP session, in which a file is uploaded to the server.
Sftp sftp1 = new Sftp();
sftp1.Connection.RemoteEndPoint.HostNameOrAddress = "mySFtpServer.com";
sftp1.Connect();
SshLoginData loginDetails = new SshLoginData();
loginDetails.Username = "myUsername";
loginDetails.Password = "myPassword";
sftp1.Authenticate(loginDetails);
sftp1.Put("c:\\MyFiles\\myFile.txt", "myFile.txt", CopyMode.Copy);
sftp1.Close();
To download a trial please visit the PowerTCP SSH and SFTP for .NET product page.
MGet Code Example
See all PowerTCP SSH and SFTP for .NET Code Examples
The following example demonstrates an SFTP session in which multiple files are downloaded from the server. In this example, all files in a directory (including sub-directories) are retrieved.
Sftp sftp1 = new Sftp();
sftp1.Connection.RemoteEndPoint.HostNameOrAddress = "mySFtpServer.com";
sftp1.Connect();
SshLoginData loginDetails = new SshLoginData();
loginDetails.Username = "myUsername";
loginDetails.Password = "myPassword";
sftp1.Authenticate(loginDetails);
sftp1.Get("MyFiles/*", "c:\\MyFiles\\", true, true, CopyMode.Copy);
sftp1.Close();
To download a trial please visit the PowerTCP SSH and SFTP for .NET product page.
Receive and Display Data Code Example
See all PowerTCP SSH and SFTP for .NET Samples and Code Examples
The following example demonstrates receiving session data and outputting it to the console.
Ssh ssh1 = new Ssh();
ssh1.Connection.RemoteEndPoint.HostNameOrAddress = "mySFtpServer.com";
ssh1.Connect();
SshLoginData loginDetails = new SshLoginData();
loginDetails.Username = "myUsername";
loginDetails.Password = "myPassword";
ssh1.Authenticate(loginDetails);
//Start a session
SessionStream session = ssh1.StartShell();
byte[] buf = new byte[1024];
Data readData = session.Read(buf);
//If readData.Count is 0, the connection has been closed.
if (readData.Count == 0)
return;
Console.Write(readData.ToString());
To download a trial please visit the PowerTCP SSH and SFTP for .NET product page.
SFTP Client Example
See all PowerTCP SSH and SFTP for .NET Samples and Code Examples
The PowerTCP SSH and SFTP for .NET SFTP Client example demonstrates many routine SFTP functions:
- Put, Get and Delete files and folders securely
- Navigate folders on the server
- Create and delete directories
- Report transfer progress information
- Provide username/password and PEM authentication options
The PowerTCP SSH and SFTP for .NET SFTP Client example is included with a trial installation of PowerTCP SSH and SFTP for .NET. To download a trial please visit the PowerTCP SSH and SFTP for .NET product page.
SSH Client Example
See all PowerTCP SSH and SFTP for .NET Samples and Code Examples
The PowerTCP SSH and SFTP for .NET SSH Client example demonstrates many routine SSH functions:
- A secure user-interactive SSH-2 client
- Multiple sessions over the connection
- Username/password and PEM authentication options
- Automated login
- Provide information about the established connection
The PowerTCP SSH and SFTP for .NET SSH Client example is included with a trial installation of PowerTCP SSH and SFTP for .NET. To download a trial please visit the PowerTCP SSH and SFTP for .NET product page.
SSH with VT Client Sample
The PowerTCP SSH and SFTP for .NET SSH VT Client sample demonstrates many routine SSH/VT functions:
- A secure user-interactive SSH-2 client
- Provide username/password and PEM authentication options
- Provide information about the established connection
- Gracefully emulate VT sessions
- Include options such as color and font settings
The SSH with VT Client sample is included with a trial installation of PowerTCP SSH and SFTP for .NET or PowerTCP Emulation for .NET. To download a trial please visit the PowerTCP SSH and SFTP for .NET or PowerTCP Emulation for .NET product page.
Purchase Options
Customize your product and support options match your needs. Discounts are applied when products are purchased in multiples or within available product suites.
Have any questions about purchasing? See our Sales FAQ