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 ذیلی نظام کامیاب ہوا۔

متعلقہ مضامین