З бекендом 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, має власний синтаксис параметрів.

Схожі статті