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 فرعي سیستم بریالی شو.

اړوندې مقالې