http://qs321.pair.com?node_id=1028323


in reply to Tunneling DBD::mysql connections over SSH without using external programs

Whereas Net::SSH::Perl seems the first natural choice, it looks like that module isn't ready for tunneling. Although there is a way to specify a number of options with the constructor,

"Net::SSH::Perl::Config understands a subset of the configuration directives that can live in these files; this subset matches up with the functionality that Net::SSH::Perl can support. Unknown keywords will simply be skipped."

LocalForward is _not_among the known options, so...

Other possible choices could be Net::SSH, Net::SSH2 or Net::SSH::Tunnel. However, these are just wrappers over the sytem-installed ssh and not pure Perl solutions, so if they 'hide the underlying system' enough or not for you remains your decision.

Maybe Net-OpenSSH-0.60 would work - but I haven't tried.


Krambambuli
---
  • Comment on Re: Tunneling DBD::mysql connections over SSH without using external programs

Replies are listed 'Best First'.
Re^2: Tunneling DBD::mysql connections over SSH without using external programs
by wwinfrey (Acolyte) on Apr 12, 2013 at 15:15 UTC
    Net::OpenSSH looks like a prime candidate. In my original post, I wrote:
    I've also looked for similar questions about tunneling in general, and have looked at say, the Tunnels section of the Net::OpenSSH perldoc, but can't wrap my head around how I would create a driver handle that connects over the pipes created by Net::OpenSSH's open_ex method...
    So really, I suppose my entire post could have been distilled down to "How do you make DBI connect with DBD::mysql over Net::OpenSSH tunnels?" but I did not want to necessarily dis-avail myself of other possible solutions. I shouldn't have been so quick to dismiss the VPN solution out-of-hand, especially seeing that is, as Salva alluded to above, what Net::OpenSSH's perldoc "Tunnels" section is referring to.
    However, these are just wrappers over the sytem-installed ssh and not pure Perl solutions, so if they 'hide the underlying system' enough or not for you remains your decision.
    In the absence of any other viable solution, I suppose I may have to settle for something in this approach. The reason I'm hesitant to use wrappers for system binaries is because I'd like to wrap this up in an easily-distributed module to my local team of co-devs, and did I mention the target OS will eventually be Windows?

      Looks like Net::OpenSSH isn't supported on Windows, so that's out. Probably should have checked that requirement beforehand. Tunneling and VPNs likely would not have worked here either because, Windows.

      I suppose I'll have to find another path.

        In my experience, the MinGW ssh client (as distributed with "Git for Windows") and the plink.exe as distributed with PuTTy work very well with port forwarding.