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 பேச்சுவார்த்தைக்குப் பிறகு இயங்குகிறது. SFTP கோரும் முன் ssh2-இன் ready நிகழ்வுக்காகக் காத்திருங்கள். இவை தனித்தனி வெற்றிகரமான நிலைகள்; ப்ராக்ஸிக்கான TCP இணைப்போ SOCKS பதிலோ SSH அங்கீகாரம் அல்லது SFTP துணைமுறைமை வெற்றியடைந்ததை நிரூபிக்காது.

தொடர்புடைய கட்டுரைகள்