ssh2-ին տվեք SOCKS-ով բացված socket-ը
Նախ համաձայնեցրեք SOCKS կապը, ապա SFTP ենթահամակարգը բացելուց առաջ դրա նպատակակետ socket-ը հանձնեք ssh2-ին։
ssh2-ն ընդունում է արդեն միացված հոսք իր sock ընտրանքով։ Թող socksv5-ը կառուցի երթուղին դեպի SSH սերվեր, ապա այդ հոսքը հանձնեք 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-ը հավելվածի գոյություն ունեցող SSH կարգավորումն է՝ ներառյալ հաշիվը, բանալին և hostVerifier քաղաքականությունը։ SOCKS հոսթը և պորտը նշում են միջնորդին. sshConfig.host-ը և port-ը նշում են վերջնական SSH ծառայությունը։
Օրինակն օգտագործում է առանց նույնականացման SOCKS վերջնակետ։ Հանրային ինտերնետից հասանելի SSH սերվերի համար SOCKS5 պրոքսիների ցանկը կարող է թեկնածուներ տալ. դրանցից յուրաքանչյուրը դեռ պետք է թույլատրի SSH նպատակակետը և պորտը։ Դրա օգտանուն/գաղտնաբառ մեթոդի համար auths-ում օգտագործեք socks.auth.UserPassword(proxyUser, proxyPassword)։ Այդ հավատարմագրերը չեն փոխարինում SSH հաշվին։
localDNS false-ը նպատակակետի հոսթի անունը փոխանցում է SOCKS սերվերին՝ օգտագործելով պրոքսի կողմի նպատակակետի լուծումը։ Առանց այդ հստակ ընտրության՝ socksv5-ի փաստաթղթավորված լռելյայնը փորձում է տեղական լուծում։
SOCKS callback-ը գործարկվում է համաձայնեցումից հետո։ Սպասեք ssh2-ի ready իրադարձությանը նախքան SFTP պահանջելը։ Սրանք առանձին հաջող փուլեր են. ոչ պրոքսիի հետ TCP կապը, ոչ SOCKS պատասխանը չեն ապացուցում, որ SSH նույնականացումը կամ SFTP ենթահամակարգը հաջողվել են։