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.

Падобныя артыкулы