Transmettez le socket CONNECT terminé à ssh2-sftp-client
Conservez le salut SSH déjà mis en tampon après les en-têtes du proxy, puis utilisez sock avec les options SSH habituelles de la destination.
import SftpClient from 'ssh2-sftp-client';
const client = new SftpClient();
await client.connect({
...sshOptions,
sock: tunnelSocket,
});Fournissez l'hôte, le port, le compte et la politique de clé d'hôte de la destination existante dans sshOptions. Le socket doit déjà passer par un tunnel CONNECT accepté vers cette destination, pas seulement vers l'écouteur du proxy.
Vérifiez l'assistant avant de remettre le flux : rejetez 407 ou toute autre réponse en échec, conservez les échéances de configuration et fermez les sockets rejetés. L'événement connect HTTP de Node contient les octets head déjà lus après les en-têtes ; conservez un tampon non vide avec la remise de flux appropriée, par exemple socket.unshift(head). Il peut contenir le salut SSH.
Transmettez le socket sans tarder, puis fermez la tâche SFTP terminée avec await client.end(). Un HTTP Agent ailleurs ne crée pas ce transport SSH, et le compte CONNECT est distinct du compte SSH.