Understanding Chilkat’s SSH Tunnel Class

Before Chilkat’s SSH Tunnel, your app would need to connect to a tunnel process/service running either on the local machine or on some computer on the LAN, and then tunnel out to the remote server.  It would look like this:

App ——(1)——>  TunnelService —-(2)——> SshServer —-(3)—–> SomeDestServerSuchAsSQL

You can wrap a non-encrypted TCP connection, or a TLS connection within the SSH Tunnel.
For example, if you connect with TLS, then (1) and (3) are TLS, and (2) is TLS wrapped inside SSH.
The (1) connection is within your LAN, the (3) connection is within the LAN on the server-side, and the (2) connection is over the Internet.

With Chilkat, the TunnelService is no longer a separate service running somewhere on your LAN.
Rather, it’s a background thread of your app.  Thus.. you can run your app anywhere and tunnel without needing to pre-install some SSH tunnel service on the LAN.  (In effect, you’re app is carrying the TunnelService in it’s back pocket..)

Multiple SSH Tunnels – ODBC Connection

Question:

Hi, I’m extremely interested in purchasing the Chilikat SSH dll. Let
me describe my situation:

I have several host sites (approximately 70 of them) that allow me to
connect to their SSH servers. All of these sites have a database
server (sitting on the same server as the ssh server) accepting
connections on port 1937. I have been successful in connecting to
each site (although one site at a time) using a SSH Port Forwarding
command, however I have to manually enter my SSH password (which is
why I’m looking at automating this using your SSH package). Also, all
of these SSH sites are on different networks with their own subnet.

Instead of connecting to one site at a time, I would like to be able
to connect to all of the sites using your software. That means I
would have multiple SSH tunnels open at once. The problem is, my ODBC
connection doesn’t know which tunnel it’s supposed to go through in
order to connect to the correct database. That’s because I select
‘127.0.0.1’ as the DB server in the SSH connection command, but how
does that ODBC connection know which tunnel I want it to use?

I thought maybe I could specify the source port in the SSH connection
and then when I use a ODBC connection string, I would be able to
select the source port that goes with the database that I’m connecting
to. However, I haven’t found anything about selecting the source port
in an ODBC connection string (only the destination port).

So my question is, is there any way I can use your SSH package to open
multiple SSH connections and then use an odbc connection string to
acess the correct tunnel?

Answer:

Yes, it’s possible, and it’s very easy.

When the SSH Tunnel thread accepts a new connection, it uses the current
value of the DestPort and DestHostname properties for the destination
database server. Therefore, before each connection is established,
change the DestPort and DestHostname properties to the correct database
server. Your solution would involve 2 background threads, both of which
are completely managed by the SshTunnel class: a background thread for
accepting new connections, and a background thread for managing all
existing tunnels.

SSH direct-tcpip Port Forwarding (tunneling)

ASP: SSH Tunnel (Port Forwarding via direct-tcpip channel)
SQL Server: SSH Tunnel (Port Forwarding via direct-tcpip channel)
C#: SSH Tunnel (Port Forwarding via direct-tcpip channel)
C++: SSH Tunnel (Port Forwarding via direct-tcpip channel)
MFC: SSH Tunnel (Port Forwarding via direct-tcpip channel)
C: SSH Tunnel (Port Forwarding via direct-tcpip channel)
Delphi: SSH Tunnel (Port Forwarding via direct-tcpip channel)
Visual FoxPro: SSH Tunnel (Port Forwarding via direct-tcpip channel)
Java: SSH Tunnel (Port Forwarding via direct-tcpip channel)
Perl: SSH Tunnel (Port Forwarding via direct-tcpip channel)
PHP: SSH Tunnel (Port Forwarding via direct-tcpip channel)
Python: SSH Tunnel (Port Forwarding via direct-tcpip channel)
Ruby: SSH Tunnel (Port Forwarding via direct-tcpip channel)
VB.NET: SSH Tunnel (Port Forwarding via direct-tcpip channel)
Visual Basic: SSH Tunnel (Port Forwarding via direct-tcpip channel)
VBScript: SSH Tunnel (Port Forwarding via direct-tcpip channel)

POP3 SSH Tunneling (Port Forwarding)

ASP: POP3 SSH Tunneling (Port Forwarding)
SQL Server: POP3 SSH Tunneling (Port Forwarding)
C#: POP3 SSH Tunneling (Port Forwarding)
C++: POP3 SSH Tunneling (Port Forwarding)
MFC: POP3 SSH Tunneling (Port Forwarding)
C: POP3 SSH Tunneling (Port Forwarding)
Delphi: POP3 SSH Tunneling (Port Forwarding)
Visual FoxPro: POP3 SSH Tunneling (Port Forwarding)
Java: POP3 SSH Tunneling (Port Forwarding)
Perl: POP3 SSH Tunneling (Port Forwarding)
PHP: POP3 SSH Tunneling (Port Forwarding)
Python: POP3 SSH Tunneling (Port Forwarding)
Ruby: POP3 SSH Tunneling (Port Forwarding)
VB.NET: POP3 SSH Tunneling (Port Forwarding)
Visual Basic: POP3 SSH Tunneling (Port Forwarding)
VBScript: POP3 SSH Tunneling (Port Forwarding)

SMTP SSH Tunneling (Port Forwarding)

ASP: SMTP SSH Tunneling (Port Forwarding)
SQL Server: SMTP SSH Tunneling (Port Forwarding)
C#: SMTP SSH Tunneling (Port Forwarding)
C++: SMTP SSH Tunneling (Port Forwarding)
MFC: SMTP SSH Tunneling (Port Forwarding)
C: SMTP SSH Tunneling (Port Forwarding)
Delphi: SMTP SSH Tunneling (Port Forwarding)
Visual FoxPro: SMTP SSH Tunneling (Port Forwarding)
Java: SMTP SSH Tunneling (Port Forwarding)
Perl: SMTP SSH Tunneling (Port Forwarding)
PHP: SMTP SSH Tunneling (Port Forwarding)
Python: SMTP SSH Tunneling (Port Forwarding)
Ruby: SMTP SSH Tunneling (Port Forwarding)
VB.NET: SMTP SSH Tunneling (Port Forwarding)
Visual Basic: SMTP SSH Tunneling (Port Forwarding)
VBScript: SMTP SSH Tunneling (Port Forwarding)

IMAP SSH Tunneling (Port Forwarding)

ASP: IMAP SSH Tunneling (Port Forwarding)
SQL Server: IMAP SSH Tunneling (Port Forwarding)
C#: IMAP SSH Tunneling (Port Forwarding)
C++: IMAP SSH Tunneling (Port Forwarding)
MFC: IMAP SSH Tunneling (Port Forwarding)
C: IMAP SSH Tunneling (Port Forwarding)
Delphi: IMAP SSH Tunneling (Port Forwarding)
Visual FoxPro: IMAP SSH Tunneling (Port Forwarding)
Java: IMAP SSH Tunneling (Port Forwarding)
Perl: IMAP SSH Tunneling (Port Forwarding)
PHP: IMAP SSH Tunneling (Port Forwarding)
Python: IMAP SSH Tunneling (Port Forwarding)
Ruby: IMAP SSH Tunneling (Port Forwarding)
VB.NET: IMAP SSH Tunneling (Port Forwarding)
Visual Basic: IMAP SSH Tunneling (Port Forwarding)
VBScript: IMAP SSH Tunneling (Port Forwarding)

IMAP SSH Tunneling (Port Forwarding)

These new examples demonstrate how to use IMAP in an SSH tunnel:

ASP: IMAP SSH Tunneling (Port Forwarding)
SQL Server: IMAP SSH Tunneling (Port Forwarding)
C#: IMAP SSH Tunneling (Port Forwarding)
C++: IMAP SSH Tunneling (Port Forwarding)
MFC: IMAP SSH Tunneling (Port Forwarding)
C: IMAP SSH Tunneling (Port Forwarding)
Delphi: IMAP SSH Tunneling (Port Forwarding)
Visual FoxPro: IMAP SSH Tunneling (Port Forwarding)
Java: IMAP SSH Tunneling (Port Forwarding)
Perl: IMAP SSH Tunneling (Port Forwarding)
PHP: IMAP SSH Tunneling (Port Forwarding)
Python: IMAP SSH Tunneling (Port Forwarding)
Ruby: IMAP SSH Tunneling (Port Forwarding)
VB.NET: IMAP SSH Tunneling (Port Forwarding)
Visual Basic: IMAP SSH Tunneling (Port Forwarding)
VBScript: IMAP SSH Tunneling (Port Forwarding)