Entregue o socket CONNECT concluído ao ssh2-sftp-client
Preserve a saudação SSH já armazenada após os cabeçalhos do proxy e use sock com as opções SSH normais do destino.
import SftpClient from 'ssh2-sftp-client';
const client = new SftpClient();
await client.connect({
...sshOptions,
sock: tunnelSocket,
});Forneça o host, a porta, a conta e a política de chave de host do destino existente em sshOptions. O socket já deve seguir por um túnel CONNECT aceito até esse destino, não apenas até o ouvinte do proxy.
Verifique o auxiliar antes de entregar o fluxo: rejeite 407 ou outras respostas com falha, mantenha os prazos de configuração e feche os sockets rejeitados. O evento connect HTTP do Node inclui bytes head já lidos após os cabeçalhos; preserve um buffer não vazio com a entrega de fluxo adequada, por exemplo socket.unshift(head). Ele pode conter a saudação SSH.
Passe o socket imediatamente e depois feche o trabalho SFTP concluído com await client.end(). Um HTTP Agent em outro lugar não cria este transporte SSH, e a conta CONNECT é separada da conta SSH.