Với backend OpenSSH của Net::SFTP::Foreign, việc định tuyến qua proxy có thể được biểu diễn như một tùy chọn SSH. Tham số more được ghi trong tài liệu của mô-đun nhận một mảng các đối số lệnh:

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;

Điều này giả định đã có một nc helper tương thích OpenBSD. OpenSSH chạy nó cục bộ để thiết lập kết nối SOCKS5 tới đích SFTP. Các placeholder cung cấp host và cổng mà SSH đã chọn. Để tới một máy chủ SFTP công cộng qua một trung gian công cộng được phép, hãy chọn cho helper một điểm cuối không cần tài khoản từ danh sách proxy SOCKS5; nó phải cho phép đích và cổng SSH đó.

Ranh giới đối số rất quan trọng: -o là một đối số, và toàn bộ phép gán ProxyCommand là đối số tiếp theo. Tham số more của Net::SFTP::Foreign không tự động coi bất kỳ chuỗi nào chứa vài đối số SSH là một mảng.

Ứng dụng cũng có thể giữ ProxyCommand trong cấu hình SSH Host thông thường và truyền bí danh host đó cho Net::SFTP::Foreign. Hãy dùng cấu hình của backend OpenSSH ở một trong hai dạng; một backend khác như Plink có cú pháp tùy chọn riêng.

Bài viết liên quan