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.