Chilkat
HOME
Android™
ASP
Visual Basic
VB.NET
C#
iOS (IPhone)
Objective-C
C++
C
MFC
Delphi
FoxPro
Java
Perl
PHP Extension
PHP ActiveX
Python
PowerShell
Ruby
SQL Server
VBScript
|
SSH Tunnel using an HTTP proxyDemonstrates how to establish an SSH tunnel that uses an HTTP proxy.
import sys import chilkat sshTunnel = chilkat.CkSshTunnel() success = sshTunnel.UnlockComponent("30-day trial") if (success != True): print sshTunnel.lastErrorText() sys.exit() # The DestHostname / DestPort is the server with which we # are ultimately communicating. sshTunnel.put_DestPort(1433) sshTunnel.put_DestHostname("myServer.com") # Provide information about the location of the SSH server, # and the authentication to be used with it. This is the # login information for the SSH server. sshTunnel.put_SshHostname("192.168.1.108") sshTunnel.put_SshPort(22) sshTunnel.put_SshLogin("mySshLogin") sshTunnel.put_SshPassword("mySshPassword") # To connect through an HTTP proxy, set the HttpProxyHostname # and HttpProxyPort properties to the hostname (or IP address) # and port of the HTTP proxy. Typical port numbers used by # HTTP proxy servers are 3128 and 8080. sshTunnel.put_HttpProxyHostname("www.my-http-proxy.com") sshTunnel.put_HttpProxyPort(3128) # Important: Your HTTP proxy server must allow non-HTTP # traffic to pass. Otherwise this does not work. # Start accepting connections in a background thread. # The SSH tunnels are autonomously run in a background # thread. There is one background thread for accepting # connections, and another for managing the tunnel pool. listenPort = 3316 success = sshTunnel.BeginAccepting(listenPort) if (success != True): print sshTunnel.lastErrorText() sys.exit() # At this point you may write code to communicate with # the server at DestHostname/DestPort. This could be anything -- # it could be WinSock, ADO/ODBC code, Chilkat Socket, etc. # However, instead of connecting directly to DestHostname/DestPort, # your code would connect to localhost:3316 (because this # is the listenPort of the SSH Tunnel # This is what happens when you connect to localhost:3316 # 1) The connection is accepted by the SSH tunnel # background thread (which was started in the call to BeginAccepting). # 2) In the background thread, a connection to a remote SSH # server is established via an HTTP proxy. # 3) Port-forwarding is setup so that the remote SSH server connects # to the DestHostname/DestPort. # 4) Data sent by your application to localhost:3316 is ultimately forwarded to DestHostname/DestPort # 5) Data sent back from DestHostname/DestPort is forwarded back and received by your application # When you're finished with the connection, you may # stop the background tunnel threads: # Stop the background thread that accepts new connections: success = sshTunnel.StopAccepting() if (success != True): print sshTunnel.lastErrorText() sys.exit() # If any background tunnels are still in existence (and managed # by a single SSH tunnel pool background thread), stop them... maxWaitMs = 1000 success = sshTunnel.StopAllTunnels(maxWaitMs) if (success != True): print sshTunnel.lastErrorText() sys.exit() |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.