More .NET libraries
- 
                                
                                    
                                
                                Rebex FTP
                                .NET FTP client
 - 
                                
                                    
                                
                                Rebex SSH Shell
                                .NET SSH Shell
 - 
                                
                                    
                                
                                Rebex Total Pack
                                All Rebex .NET libraries together
 
Back to feature list...
Connecting
On this page:
Connecting to SFTP/SSH servers
    To connect to an SFTP server running on default port 22, use Connect method. Once connected, don't forget to
    check the server's fingerprint
    as a security measure.
SFTP is a file transfer protocol that runs over an SSH protocol session. Most modern SSH servers support SFTP.
// create SFTP client instance var sftp = new Rebex.Net.Sftp(); // connect to a server sftp.Connect(hostname); // check sftp.Fingerprint here
' create SFTP client instance Dim sftp = New Rebex.Net.Sftp ' connect to a server sftp.Connect(hostname) ' check sftp.Fingerprint here
    To connect to a server running on non-standard port, just pass the port number to the Connect method as an additional argument.
Setting connection options
    Various connection options are available through Sftp.Settings object. Set these before connecting to a server if needed.
For information about proxy servers, see Proxies and custom sockets.
// create SFTP client instance var sftp = new Rebex.Net.Sftp(); // use POSIX-style rename operation if available sftp.Settings.UsePosixRename = true; // only allow specific algorithms sftp.Settings.SshParameters.HostKeyAlgorithms = SshHostKeyAlgorithm.RSA; sftp.Settings.SshParameters.EncryptionAlgorithms = SshEncryptionAlgorithm.AES; // enable ZLIB compression sftp.Settings.SshParameters.Compression = true; // connect to a server sftp.Connect(hostname);
' create SFTP client instance Dim sftp = New Rebex.Net.Sftp ' use POSIX-style rename operation if available sftp.Settings.UsePosixRename = True ' only allow specific algorithms sftp.Settings.SshParameters.HostKeyAlgorithms = SshHostKeyAlgorithm.RSA sftp.Settings.SshParameters.EncryptionAlgorithms = SshEncryptionAlgorithm.AES ' enable ZLIB compression sftp.Settings.SshParameters.Compression = True ' connect to a server sftp.Connect(hostname)
Getting info about existing connection
Once connected (or authenticated), you can get useful information about the current session such as server/user name, server fingerprint, negotiated algorithms or SFTP protocol version. Don't be afraid - user's password or private key are not stored with the session.
Sftp.Session object's properties.
// create SFTP client instance
var sftp = new Rebex.Net.Sftp();
// connect to a server
sftp.Connect(hostname);
// display info
Console.WriteLine("Connected to {0}:{1}", sftp.ServerName, sftp.ServerPort);
Console.WriteLine("Server: {0}", sftp.Session.ServerIdentification);
Console.WriteLine("Server host key: {0} ({1}-bit), Fingerprint: {2}",
    sftp.ServerKey.KeyAlgorithm,
    sftp.ServerKey.KeySize,
    sftp.ServerKey.Fingerprint);
// verify fingerprint
// ...
// authenticate
sftp.Login(username, password);
// display info to the user
Console.WriteLine("Logged on as {0} (Protocol version: {1}).",
    sftp.UserName, sftp.ProtocolVersion);
' create SFTP client instance
Dim sftp = New Rebex.Net.Sftp()
' connect to a server
sftp.Connect(hostname)
' display info
Console.WriteLine("Connected to {0}:{1}", sftp.ServerName, sftp.ServerPort)
Console.WriteLine("Server: {0}", sftp.Session.ServerIdentification)
Console.WriteLine("Server host key: {0} ({1}-bit), Fingerprint: {2}",
    sftp.ServerKey.KeyAlgorithm,
    sftp.ServerKey.KeySize,
    sftp.ServerKey.Fingerprint)
' verify fingerprint
' ...
' authenticate
sftp.Login(username, password)
' display info to the user
Console.WriteLine("Logged on as {0} (Protocol version: {1}).",
    sftp.UserName, sftp.ProtocolVersion)
Reusing SSH connection in multiple SFTP/SCP/SSH sessions
    SSH makes it possible to
    share one connection between multiple protocol sessions.
    Once you have a connected and authenticated an Sftp object, you can bind additional Sftp or Scp objects to its
    underlying SshSession using the Bind method.
    This will spawn multiple SFTP or SCP sessions, all using a single underlying SSH connection.
// connect using the first SFTP client Sftp sftp1 = new Rebex.Net.Sftp(); sftp1.Connect(hostname); sftp1.Login(username, password); // bind second SFTP client to the session Sftp sftp2 = new Sftp(); sftp2.Bind(sftp1.Session); // transfer files using both clients sftp1.PutFile(@"C:\MyData\file1.txt", "file1.txt"); sftp2.PutFile(@"C:\MyData\file2.txt", "file2.txt");
' connect using the first SFTP client
Dim sftp1 = New Rebex.Net.Sftp()
sftp1.Connect(hostname)
sftp1.Login(username, password)
' bind second SFTP client to the session
Dim sftp2 = New Sftp()
sftp2.Bind(sftp1.Session)
' transfer files using both clients
sftp1.PutFile("C:\MyData\file1.txt", "file1.txt")
sftp2.PutFile("C:\MyData\file2.txt", "file2.txt")
    You can even use one of the underlying SshSession object's methods to
    execute remote commands (if allowed by the server).
    Please note that it's not necessary to spawn multiple SFTP sessions to be able to transfer multiple
    files simultaneously - even a single Sftp object can do that.
Checking connection state
    To check whether a session is still alive, use GetConnectionState method.
    This will send a simple "read-only" command to the server to ensure the connection is still up and running.
// check connection state
if (!sftp.IsConnected)
{
    // notify the user and return
    return;
}
' check connection state
If Not sftp.IsConnected Then
    ' notify the user and return
    Return
End If
Back to feature list...