SOCKS ئارقىلىق ئېچىلغان socket نى ssh2 گە بېرىڭ
ئالدى بىلەن 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 قايتۇرما چاقىرىقى كېڭىشىشتىن كېيىن ئىجرا بولىدۇ. SFTP تەلەپ قىلىشتىن بۇرۇن ssh2 نىڭ ready ۋەقەسىنى كۈتۈڭ. بۇلار ئايرىم مۇۋەپپەقىيەت باسقۇچلىرى; ۋاكالەتچىگە TCP ئۇلىنىشى ياكى SOCKS جاۋابىنىڭ ھېچقايسىسى SSH دەلىللەش ياكى SFTP تارماق سىستېمىسىنىڭ مۇۋەپپەقىيەت قازانغانلىقىنى ئىسپاتلىمايدۇ.