Għaddi lil ssh2 is-socket miftuħa permezz ta' SOCKS
Innegozja l-konnessjoni SOCKS l-ewwel, imbagħad għaddi s-socket tad-destinazzjoni tagħha lil ssh2 qabel ma tiftaħ is-subsistema SFTP.
ssh2 jaċċetta stream diġà konness permezz tal-għażla sock tiegħu. Ħalli lil socksv5 jistabbilixxi r-rotta lejn is-server SSH, imbagħad għaddi dak is-stream lil 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 hija l-konfigurazzjoni SSH eżistenti tal-applikazzjoni, inkluż il-kont, iċ-ċavetta u l-politika hostVerifier tagħha. L-host u l-port SOCKS jidentifikaw l-intermedjarju; sshConfig.host u port jidentifikaw is-servizz SSH finali.
L-eżempju juża punt tat-tmiem SOCKS mingħajr awtentikazzjoni. Għal server SSH li jista' jintlaħaq mill-internet pubbliku, il-lista tal-proxy SOCKS5 tista' tipprovdi kandidati; kull wieħed xorta għandu jippermetti d-destinazzjoni u l-port SSH. Għall-metodu tal-isem tal-utent/password tiegħu, uża socks.auth.UserPassword(proxyUser, proxyPassword) f' auths. Dawk il-kredenzjali ma jissostitwixxux il-kont SSH.
localDNS false jgħaddi l-isem tal-host tad-destinazzjoni lis-server SOCKS, u juża riżoluzzjoni tad-destinazzjoni fuq in-naħa tal-proxy. Mingħajr dik l-għażla espliċita, il-predispost dokumentat ta' socksv5 jipprova riżoluzzjoni lokali.
Il-callback SOCKS jaħdem wara n-negozjar. Stenna l-avveniment ready ta' ssh2 qabel ma titlob SFTP. Dawn huma stadji ta' suċċess separati; la konnessjoni TCP mal-proxy u lanqas tweġiba SOCKS ma jippruvaw li l-awtentikazzjoni SSH jew is-subsistema SFTP irnexxew.