In the Net::OpenSSH case, you can use master_opts to pass a ProxyCommand configuration directive to the underlying SSH process.
For instance:
my $ssh = Net::OpenSSH($host,
master_opts => [-o => 'ProxyCommand=ssh foo nc
+%h %p']);
Also, there is Net::OpenSSH::Gateway, that will find a way to open a SSH connection to a remote server through any combination of proxies and gateways (well, mostly).
I have not published it on CPAN yet because, even it is already functional, I have found some problems with its internal architecture that I want to solve first.
You can use it as follows:
my $ssh = Net::OpenSSH->new($host,
gateway => { proxies => ['ssh://intermedia
+te_host',
'ssh://another_ho
+st',
'http://proxy:808
+0'] } );
|