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 ఉపవ్యవస్థ విజయవంతమైందని నిరూపించవు.

సంబంధిత వ్యాసాలు