import SftpClient from 'ssh2-sftp-client';

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

Укажите существующий хост, порт, учётную запись и политику ключа хоста назначения в sshOptions. Сокет уже должен вести через принятый туннель CONNECT к этому назначению, а не только к прослушивателю прокси.

Проверьте помощник перед передачей потока: отклоните 407 или другие неудачные ответы, сохраните сроки настройки и закройте отклонённые сокеты. Событие connect HTTP в Node содержит байты head, уже прочитанные после заголовков; сохраните непустой буфер с подходящей передачей потока, например socket.unshift(head). В нём может быть приветствие SSH.

Передайте сокет сразу же, затем закройте завершённую работу SFTP с помощью await client.end(). HTTP Agent в другом месте не создаёт этот транспорт SSH, а учётная запись CONNECT отделена от учётной записи SSH.

Похожие статьи