Net::SFTP::Foreign의 OpenSSH 백엔드에서는 프록시 라우팅을 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가 이를 로컬에서 실행해 SFTP 대상으로 SOCKS5 연결을 맺습니다. 자리 표시자는 SSH가 선택한 호스트와 포트를 제공합니다. 허용된 공개 중계를 통해 공개 SFTP 서버에 접근하려면 도우미를 위해 SOCKS5 프록시 목록에서 계정이 필요 없는 엔드포인트를 고르십시오. 그 엔드포인트는 해당 SSH 대상과 포트를 허용해야 합니다.

인수의 경계가 중요합니다. -o는 하나의 인수이고, ProxyCommand 지정 전체가 그다음 인수입니다. Net::SFTP::Foreign의 more 매개변수는 여러 SSH 인수를 담은 임의의 문자열을 자동으로 배열로 취급하지 않습니다.

애플리케이션은 ProxyCommand를 평소의 SSH Host 설정에 그대로 두고 그 호스트 별칭을 Net::SFTP::Foreign에 넘길 수도 있습니다. OpenSSH 백엔드의 설정은 두 형태 모두 사용할 수 있습니다. Plink 같은 다른 백엔드는 자체 옵션 문법을 가집니다.

관련 글