С бэкендом OpenSSH в Net::SFTP::Foreign маршрутизацию через прокси можно выразить как параметр SSH. Документированный параметр модуля more принимает массив аргументов команды:

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;

Это предполагает наличие совместимой с OpenBSD вспомогательной программы nc. OpenSSH запускает её локально, чтобы установить соединение SOCKS5 с пунктом назначения SFTP. Заполнители передают выбранные SSH хост и порт. Чтобы достичь публичного SFTP-сервера через разрешённого публичного посредника, выберите для этой программы конечную точку без учётной записи из списка прокси SOCKS5; она должна разрешать этот пункт назначения и порт SSH.

Граница аргументов важна: -o — это один аргумент, а всё присваивание ProxyCommand — следующий. Параметр more в Net::SFTP::Foreign не воспринимает произвольную строку с несколькими аргументами SSH как массив автоматически.

Приложение может также оставить ProxyCommand в своей обычной конфигурации SSH Host и передать этот псевдоним хоста в Net::SFTP::Foreign. Используйте конфигурацию бэкенда OpenSSH в любой из двух форм; у другого бэкенда, например Plink, свой синтаксис параметров.

Похожие статьи