Con il backend OpenSSH di Net::SFTP::Foreign, l'instradamento tramite proxy può essere espresso come opzione SSH. Il parametro more documentato del modulo accetta un array di argomenti del comando:

use Net::SFTP::Foreign;

my $sftp = Net::SFTP::Foreign->new(
    'files.example.net',
    user => 'operator',
    more => [
        '-o',
        'ProxyCommand=nc -X 5 -x proxy.example.net:1080 %h %p',
    ],
);

die $sftp->error if $sftp->error;

Ciò presuppone un helper nc esistente e compatibile con OpenBSD. OpenSSH lo esegue localmente per stabilire una connessione SOCKS5 verso la destinazione SFTP. I segnaposto forniscono l'host e la porta scelti da SSH. Per raggiungere un server SFTP pubblico tramite un intermediario pubblico consentito, scegli per l'helper un endpoint senza account dalla lista di proxy SOCKS5; deve consentire quella destinazione e quella porta SSH.

Il confine tra gli argomenti conta: -o è un argomento, e l'intera assegnazione di ProxyCommand è il successivo. Il parametro more di Net::SFTP::Foreign non tratta automaticamente come array una stringa arbitraria che contenga più argomenti SSH.

Un'applicazione può anche mantenere il ProxyCommand nella propria configurazione SSH Host abituale e passare quell'alias di host a Net::SFTP::Foreign. Usa la configurazione del backend OpenSSH in entrambe le forme; un backend diverso come Plink ha la propria sintassi delle opzioni.

Articoli correlati