Gje ssh2 sockelen som vart opna via SOCKS
Forhandle SOCKS-tilkoplinga fyrst, og gje deretter mål-sockelen hennar til ssh2 før SFTP-undersystemet vert opna.
ssh2 tek imot ein allereie tilkopla straum via sock-valet. Lat socksv5 leggja ruta til SSH-tenaren, og gje deretter den straumen til SSH:
const socks = require('socksv5');
const { Client } = require('ssh2');
const connection = socks.connect({
host: sshConfig.host,
port: sshConfig.port || 22,
proxyHost: 'proxy.example',
proxyPort: 1080,
localDNS: false,
auths: [socks.auth.None()],
}, socket => {
const ssh = new Client();
ssh.on('error', error => console.error(error.message));
ssh.on('ready', () => {
ssh.sftp((error, sftp) => {
if (error) {
console.error(error.message);
ssh.end();
return;
}
sftp.readdir('.', (error, entries) => {
if (error) console.error(error.message);
else console.log(entries);
ssh.end();
});
});
});
ssh.connect({ ...sshConfig, sock: socket });
});
connection.on('error', error => console.error(error.message));
sshConfig er den eksisterande SSH-konfigurasjonen til applikasjonen, medrekna kontoen, nøkkelen og hostVerifier-retningslinja. SOCKS-verten og -porten peikar på mellomleddet; sshConfig.host og port peikar på den endelege SSH-tenesta.
Dømet nyttar eit SOCKS-endepunkt utan autentisering. For ein SSH-tenar som er tilgjengeleg frå det opne nettet, kan SOCKS5-proxylista skaffa kandidatar; kvar av dei må framleis tillate SSH-målet og -porten. Bruk socks.auth.UserPassword(proxyUser, proxyPassword) i auths for brukarnamn/passord-metoden. Desse innloggingsopplysningane erstattar ikkje SSH-kontoen.
localDNS false sender vertsnamnet til målet til SOCKS-tenaren og nyttar måloppslag på proxy-sida. Utan dette eksplisitte valet prøver den dokumenterte standarden i socksv5 lokalt oppslag.
SOCKS-callbacken køyrer etter forhandlinga. Vent på ready-hendinga i ssh2 før du ber om SFTP. Dette er skilde vellukka fasar; korkje ei TCP-tilkopling til proxyen eller eit SOCKS-svar provar at SSH-autentiseringa eller SFTP-undersystemet lukkast.