Перадайце гатовы сокет 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.