Передайте готовий сокет CONNECT у ssh2-sftp-client
Збережіть привітання SSH, уже буферизоване після заголовків проксі, потім використайте sock зі звичайними параметрами SSH призначення.
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.