Jepini ssh2 soketin e hapur përmes SOCKS
Negocioni së pari lidhjen SOCKS, më pas kaloni soketin e destinacionit tek ssh2 përpara se të hapni nënsistemin SFTP.
ssh2 pranon një rrjedhë tashmë të lidhur përmes opsionit të tij sock. Lëreni socksv5 të vendosë rrugën drejt serverit SSH, më pas kaloni atë rrjedhë tek 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 është konfigurimi ekzistues SSH i aplikacionit, duke përfshirë llogarinë, çelësin dhe politikën hostVerifier. Host-i dhe porta SOCKS identifikojnë ndërmjetësin; sshConfig.host dhe port identifikojnë shërbimin përfundimtar SSH.
Shembulli përdor një pikë fundore SOCKS pa vërtetim. Për një server SSH të arritshëm nga interneti publik, lista e përfaqësuesve SOCKS5 mund të ofrojë kandidatë; secili ende duhet të lejojë destinacionin dhe portën SSH. Për metodën e emrit të përdoruesit/fjalëkalimit, përdorni socks.auth.UserPassword(proxyUser, proxyPassword) në auths. Këto kredenciale nuk zëvendësojnë llogarinë SSH.
localDNS false kalon emrin e hostit të destinacionit tek serveri SOCKS, duke përdorur zbërthimin e destinacionit në anën e përfaqësuesit. Pa këtë zgjedhje të qartë, parazgjedhja e dokumentuar e socksv5 provon zbërthimin lokal.
Kthimi i thirrjes SOCKS ekzekutohet pas negocimit. Prisni ngjarjen ready të ssh2 përpara se të kërkoni SFTP. Këto janë faza të suksesshme të ndara; as lidhja TCP me përfaqësuesin as përgjigja SOCKS nuk dëshmojnë se vërtetimi SSH ose nënsistemi SFTP ka pasur sukses.