עם ה-backend של 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;

הדבר מניח כלי עזר nc קיים שתואם ל-OpenBSD. OpenSSH מריץ אותו באופן מקומי כדי ליצור חיבור SOCKS5 אל יעד ה-SFTP. מצייני המקום מספקים את המארח והפורט שנבחרו ב-SSH. כדי להגיע לשרת SFTP ציבורי דרך מתווך ציבורי מורשה, בחרו נקודת קצה ללא חשבון מתוך רשימת פרוקסי SOCKS5 עבור כלי העזר; עליה להתיר את יעד ה-SSH והפורט האלה.

גבול הארגומנטים חשוב: -o הוא ארגומנט אחד, והקצאת ה-ProxyCommand כולה היא הבא. הפרמטר more של Net::SFTP::Foreign אינו מתייחס אוטומטית כמערך למחרוזת שרירותית שמכילה כמה ארגומנטים של SSH.

יישום יכול גם להשאיר את ה-ProxyCommand בתצורת ה-Host הרגילה של SSH ולהעביר את כינוי המארח הזה ל-Net::SFTP::Foreign. השתמשו בתצורת ה-backend של OpenSSH בכל אחת משתי הצורות; ל-backend אחר כגון Plink יש תחביר אפשרויות משלו.

מאמרים קשורים