Avec le backend OpenSSH de Net::SFTP::Foreign, le routage proxy peut s'exprimer comme une option SSH. Le paramètre more documenté du module accepte un tableau d'arguments de commande :

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;

Cela suppose un utilitaire nc compatible OpenBSD déjà présent. OpenSSH l'exécute localement pour établir une connexion SOCKS5 vers la destination SFTP. Les espaces réservés fournissent l'hôte et le port choisis par SSH. Pour joindre un serveur SFTP public via un intermédiaire public autorisé, choisissez pour l'utilitaire un point de terminaison sans compte dans la liste de proxies SOCKS5 ; il doit autoriser cette destination et ce port SSH.

La frontière des arguments compte : -o est un argument, et toute l'affectation ProxyCommand est le suivant. Le paramètre more de Net::SFTP::Foreign ne traite pas automatiquement comme un tableau une chaîne quelconque contenant plusieurs arguments SSH.

Une application peut aussi conserver le ProxyCommand dans sa configuration SSH Host habituelle et passer cet alias d'hôte à Net::SFTP::Foreign. Utilisez la configuration du backend OpenSSH sous l'une ou l'autre forme ; un autre backend comme Plink a sa propre syntaxe d'options.

Articles similaires