Con el backend OpenSSH de Net::SFTP::Foreign, el enrutamiento por proxy puede expresarse como una opción SSH. El parámetro more documentado del módulo acepta un arreglo de argumentos de 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;

Esto supone un auxiliar nc compatible con OpenBSD ya existente. OpenSSH lo ejecuta localmente para establecer una conexión SOCKS5 con el destino SFTP. Los marcadores de posición aportan el host y el puerto que eligió SSH. Para llegar a un servidor SFTP público a través de un intermediario público permitido, elija un extremo sin cuenta de la lista de proxies SOCKS5 para el auxiliar; debe permitir ese destino y ese puerto SSH.

El límite del argumento importa: -o es un argumento y toda la asignación de ProxyCommand es el siguiente. El parámetro more de Net::SFTP::Foreign no trata automáticamente como arreglo una cadena arbitraria que contenga varios argumentos SSH.

Una aplicación también puede mantener el ProxyCommand en su configuración habitual de Host SSH y pasar ese alias de host a Net::SFTP::Foreign. Use la configuración del backend OpenSSH en cualquiera de las dos formas; un backend distinto como Plink tiene su propia sintaxis de opciones.

Artículos relacionados