ssh2 o'zining sock parametri orqali allaqachon ulangan oqimni qabul qiladi. socksv5 SSH serveriga yo'l ochsin, so'ng o'sha oqimni SSH ga bering:

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 — ilovaning mavjud SSH konfiguratsiyasi, jumladan hisob, kalit va hostVerifier siyosati. SOCKS xosti va porti vositachini bildiradi; sshConfig.host va port yakuniy SSH xizmatini bildiradi.

Misol autentifikatsiyasiz SOCKS so'nggi nuqtasidan foydalanadi. Ommaviy internetdan yetib borish mumkin bo'lgan SSH serveri uchun SOCKS5 proksi ro'yxati nomzodlar berishi mumkin; har biri baribir SSH manzili va portiga ruxsat berishi kerak. Uning foydalanuvchi nomi/parol usuli uchun auths ichida socks.auth.UserPassword(proxyUser, proxyPassword) dan foydalaning. Bu ma'lumotlar SSH hisobini almashtirmaydi.

localDNS false manzil xost nomini SOCKS serveriga uzatadi va proksi tomonidagi manzilni aniqlashdan foydalanadi. Bu aniq tanlov bo'lmasa, socksv5 ning hujjatlashtirilgan standarti mahalliy aniqlashni sinab ko'radi.

SOCKS callback kelishuvdan keyin ishlaydi. SFTP so'rashdan oldin ssh2 ning ready hodisasini kuting. Bular alohida muvaffaqiyatli bosqichlar; proksiga TCP ulanish ham, SOCKS javobi ham SSH autentifikatsiyasi yoki SFTP quyi tizimi muvaffaqiyatli bo'lganini isbotlamaydi.

O'xshash maqolalar