Übergib den fertigen CONNECT-Socket an ssh2-sftp-client
Behalte die SSH-Begrüßung, die nach den Proxy-Headern bereits gepuffert ist, und nutze sock dann mit den üblichen SSH-Optionen des Ziels.
import SftpClient from 'ssh2-sftp-client';
const client = new SftpClient();
await client.connect({
...sshOptions,
sock: tunnelSocket,
});Gib Host, Port, Konto und Host-Key-Richtlinie des bestehenden Ziels in sshOptions an. Der Socket muss bereits über einen angenommenen CONNECT-Tunnel zu diesem Ziel führen, nicht nur zum Proxy-Listener.
Prüfe den Helfer, bevor du den Stream übergibst: Weise 407 oder andere fehlgeschlagene Antworten zurück, behalte Setup-Fristen bei und schließe abgelehnte Sockets. Das HTTP-connect-Ereignis von Node enthält bereits nach den Headern gelesene head-Bytes; bewahre einen nicht leeren Puffer mit der passenden Stream-Übergabe auf, etwa socket.unshift(head). Er kann die SSH-Begrüßung enthalten.
Übergib den Socket umgehend und schließe dann die erledigte SFTP-Aufgabe mit await client.end() ab. Ein HTTP Agent an anderer Stelle erzeugt diesen SSH-Transport nicht, und das CONNECT-Konto ist vom SSH-Konto getrennt.