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 одредиштето и портата. За неговиот метод со корисничко име/лозинка користете socks.auth.UserPassword(proxyUser, proxyPassword) во auths. Тие акредитиви не ја заменуваат SSH сметката.

localDNS false го предава името на хостот за одредиште на SOCKS серверот, користејќи резолуција на одредиштето на страната на проксито. Без овој експлицитен избор, документираната стандардна поставка на socksv5 се обидува со локална резолуција.

SOCKS повратниот повик се извршува по договарањето. Почекајте го настанот ready на ssh2 пред да побарате SFTP. Тоа се одделни успешни фази; ниту TCP врската со проксито ниту одговорот SOCKS не докажуваат дека SSH автентикацијата или потсистемот SFTP успеале.

Поврзани статии