Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Swift) Multiple Hop SSH to SFTPDemonstrates how to SFTP through an intermediate SSH server (multiple hop). The scheme looks like this: Application => ServerSSH1 => ServerSFtp The ConnectThroughSsh method is added in Chilkat version 9.5.0.55 to accomplish this task.
func chilkatTest() { // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. let ssh1 = CkoSsh()! // Hostname may be an IP address or domain name: var hostname: String? = "192.168.1.111" var port: String? = 22 // Connect directly to the 1st SSH server: var success: Bool = ssh1.connect(hostname, port: port) if success != true { print("\(ssh1.lastErrorText!)") return } // Authenticate using login/password: success = ssh1.authenticatePw("myLogin", password: "myPassword") if success != true { print("\(ssh1.lastErrorText!)") return } // Connect through the 1st SSH connection to reach a 2nd SSH server (for SFTP) // Note: Any number of connections may be simultaneously tunneled through a single // existing SSH connection. let sftp = CkoSFtp()! // Connect to some SSH/SFTP server through ssh1. success = sftp.connectThroughSsh(ssh1, hostname: "sftp.someremoteserver.com", port: 22) if success != true { print("\(sftp.lastErrorText!)") return } // Authenticate with the SFTP server. success = sftp.authenticatePw("myLogin", password: "myPassword") if success != true { print("\(sftp.lastErrorText!)") return } // After authenticating, the SFTP subsystem must be initialized: success = sftp.initializeSftp() if success != true { print("\(sftp.lastErrorText!)") return } // Upload from the local file to the SSH server. // Important -- the remote filepath is the 1st argument, // the local filepath is the 2nd argument; var remoteFilePath: String? = "hamlet.xml" var localFilePath: String? = "c:/temp/hamlet.xml" success = sftp.uploadFile(byName: remoteFilePath, localFilePath: localFilePath) if success != true { print("\(sftp.lastErrorText!)") return } print("Success.") // Close the connection with the SFTP server.(This closes the the tunnel through ssh1.) // The connection with ssh1 is still alive, and may be used for more connections. sftp.disconnect() // ... // ... // ... ssh1.disconnect() } |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.