SOCKS દ્વારા ખોલેલું સોકેટ ssh2 ને આપો
પહેલા SOCKS જોડાણની વાટાઘાટ કરો, પછી SFTP સબસિસ્ટમ ખોલતાં પહેલાં તેનું લક્ષ્ય સોકેટ 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 સબસિસ્ટમ સફળ થયું.