Mit dem OpenSSH-Backend von Net::SFTP::Foreign lässt sich Proxy-Routing als SSH-Option ausdrücken. Der dokumentierte Parameter more des Moduls nimmt ein Array von Kommandoargumenten entgegen:

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;

Das setzt einen vorhandenen nc-Helfer voraus, der mit OpenBSD kompatibel ist. OpenSSH startet ihn lokal, um eine SOCKS5-Verbindung zum SFTP-Ziel aufzubauen. Die Platzhalter liefern den von SSH gewählten Host und Port. Um einen öffentlichen SFTP-Server über einen erlaubten öffentlichen Vermittler zu erreichen, wählen Sie für den Helfer einen konto-freien Endpunkt aus der SOCKS5-Proxy-Liste; er muss dieses SSH-Ziel und diesen Port zulassen.

Die Argumentgrenze ist entscheidend: -o ist ein Argument, die gesamte ProxyCommand-Zuweisung ist das nächste. Der Parameter more von Net::SFTP::Foreign behandelt eine beliebige Zeichenkette mit mehreren SSH-Argumenten nicht automatisch als Array.

Eine Anwendung kann den ProxyCommand auch in ihrer gewohnten SSH-Host-Konfiguration belassen und diesen Host-Alias an Net::SFTP::Foreign übergeben. Nutzen Sie die Konfiguration des OpenSSH-Backends in beiden Formen; ein anderes Backend wie Plink hat seine eigene Optionssyntax.

Ähnliche Artikel