ssh2 သည် ချိတ်ဆက်ပြီးသော stream ကို ၎င်း၏ sock ရွေးချယ်မှုမှတဆင့် လက်ခံသည်။ socksv5 ကို SSH ဆာဗာသို့ လမ်းကြောင်း တည်ဆောက်ခွင့်ပြုပြီး ထို stream ကို 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 ဖွဲ့စည်းမှုဖြစ်ပြီး အကောင့်၊ key နှင့် hostVerifier မူဝါဒတို့ ပါဝင်သည်။ SOCKS host နှင့် port သည် ကြားခံကို ညွှန်ပြသည်; sshConfig.host နှင့် port သည် နောက်ဆုံး SSH ဝန်ဆောင်မှုကို ညွှန်ပြသည်။

ဤဥပမာသည် အတည်ပြုချက်မပါသော SOCKS အဆုံးမှတ်ကို အသုံးပြုသည်။ အများပြည်သူ အင်တာနက်မှ ရောက်နိုင်သော SSH ဆာဗာအတွက် SOCKS5 proxy စာရင်း သည် ကိုယ်စားလှယ်လောင်းများ ပေးနိုင်သည်; တစ်ခုချင်းစီသည် SSH ဦးတည်ချက်နှင့် port ကို ခွင့်ပြုရန် လိုအပ်ဆဲဖြစ်သည်။ ၎င်း၏ အသုံးပြုသူအမည်/စကားဝှက် နည်းလမ်းအတွက် auths တွင် socks.auth.UserPassword(proxyUser, proxyPassword) ကို အသုံးပြုပါ။ ထို အထောက်အထားများသည် SSH အကောင့်ကို အစားထိုးခြင်း မဟုတ်ပါ။

localDNS false သည် ဦးတည် host အမည်ကို SOCKS ဆာဗာသို့ ပို့ပြီး proxy ဘက်မှ ဦးတည်ချက် ဖြေရှင်းမှုကို အသုံးပြုသည်။ ထိုရှင်းလင်းသော ရွေးချယ်မှု မရှိပါက socksv5 ၏ မှတ်တမ်းတင်ထားသော မူရင်းတန်ဖိုးသည် ဒေသခံ ဖြေရှင်းမှုကို ကြိုးစားသည်။

SOCKS callback သည် ညှိနှိုင်းမှု အပြီးတွင် အလုပ်လုပ်သည်။ SFTP မတောင်းမီ ssh2 ၏ ready ဖြစ်ရပ်ကို စောင့်ပါ။ ဤအရာများသည် သီးခြား အောင်မြင်သော အဆင့်များဖြစ်သည်; proxy သို့ TCP ချိတ်ဆက်မှုဖြစ်စေ SOCKS အဖြေဖြစ်စေ SSH အတည်ပြုချက် သို့မဟုတ် SFTP စနစ်ခွဲ အောင်မြင်ကြောင်း သက်သေမပြပါ။

ဆက်စပ်ဆောင်းပါးများ