Gëff ssh2 de Socket, deen iwwer SOCKS opgemaach gouf
Verhandelt fir d'éischt d'SOCKS-Verbindung a gëff duerno hire Zilsocket un ssh2, ier den SFTP-Subsystem opgemaach gëtt.
ssh2 akzeptéiert en already verbonnene Stream iwwer seng sock-Optioun. Looss socksv5 de Wee zum SSH-Server opbauen an gëff dësen Stream duerno un 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 ass déi bestehend SSH-Konfiguratioun vun der Applikatioun, abegraff hire Kont, hire Schlëssel an hir hostVerifier-Politik. Den SOCKS-Host an de Port bezeechnen den Tëschemann; sshConfig.host a port bezeechnen dee leschte SSH-Service.
D'Beispill benotzt en SOCKS-Endpunkt ouni Authentifikatioun. Fir en SSH-Server, dee vum ëffentlechen Internet aus erreechbar ass, kann d'SOCKS5-Proxy-Lëscht Kandidate liwweren; jiddereen muss awer nach ëmmer d'SSH-Zil an de Port erlaben. Fir seng Benotzernumm/Passwuert-Method benotz socks.auth.UserPassword(proxyUser, proxyPassword) an auths. Dës Umeldungsinformatiounen ersetzen net de SSH-Kont.
localDNS false gëtt den Zilhostnumm un den SOCKS-Server weider a benotzt d'Zilopfleisung op der Proxy-Säit. Ouni dës explizit Wiel probéiert socksv5 seng dokumentéiert Standardastellung eng lokal Opléisung.
De SOCKS-Callback leeft no der Verhandlung. Waard op d'ready-Evenement vun ssh2, ier SFTP ugefrot gëtt. Dat sinn getrennt erfollegräich Phase; weder eng TCP-Verbindung zum Proxy nach eng SOCKS-Antwert beweise, datt d'SSH-Authentifikatioun oder den SFTP-Subsystem gelungen ass.