import SftpClient from 'ssh2-sftp-client';

const client = new SftpClient();
await client.connect({
  ...sshOptions,
  sock: tunnelSocket,
});

ספק את המארח, הפורט, החשבון ומדיניות מפתח המארח של היעד הקיים ב-sshOptions. הסוקט חייב כבר לעבור דרך מנהרת CONNECT שהתקבלה אל היעד הזה, ולא רק אל מאזין ה-proxy.

בדוק את העוזר לפני מסירת הזרם: דחה 407 או תגובות כושלות אחרות, שמור על מועדי ההגדרה וסגור סוקטים שנדחו. אירוע connect של HTTP ב-Node כולל בייטים של head שכבר נקראו לאחר הכותרות; שמור מאגר לא ריק עם מסירת הזרם המתאימה, למשל socket.unshift(head). ייתכן שהוא מכיל את ברכת ה-SSH.

מסור את הסוקט מיד, ואז סגור את עבודת ה-SFTP שהושלמה באמצעות await client.end(). HTTP Agent במקום אחר אינו יוצר את תעבורת ה-SSH הזו, וחשבון ה-CONNECT נפרד מחשבון ה-SSH.

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