ssh2 pieņem jau savienotu straumi ar savu opciju sock. Ļaujiet socksv5 izveidot maršrutu uz SSH serveri, pēc tam nododiet šo straumi 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 ir lietotnes esošā SSH konfigurācija, tostarp konts, atslēga un hostVerifier politika. SOCKS resursdators un ports norāda starpnieku; sshConfig.host un port norāda galīgo SSH pakalpojumu.

Piemērs izmanto SOCKS galapunktu bez autentifikācijas. SSH serverim, kas sasniedzams no publiskā interneta, SOCKS5 starpniekserveru saraksts var piedāvāt kandidātus; katram joprojām jāatļauj SSH galamērķis un ports. Tā lietotājvārda/paroles metodei auths daļā izmantojiet socks.auth.UserPassword(proxyUser, proxyPassword). Šie akreditācijas dati neaizstāj SSH kontu.

localDNS false nodod galamērķa resursdatora nosaukumu SOCKS serverim un izmanto galamērķa atrisināšanu starpniekservera pusē. Bez šīs skaidrās izvēles socksv5 dokumentētā noklusējuma vērtība mēģina lokālu atrisināšanu.

SOCKS atzvanīšana darbojas pēc sarunām. Pirms SFTP pieprasīšanas nogaidiet ssh2 ready notikumu. Tie ir atsevišķi veiksmīgi posmi; ne TCP savienojums ar starpnieku, ne SOCKS atbilde nepierāda, ka SSH autentifikācija vai SFTP apakšsistēma ir izdevusies.

Saistītie raksti