ssh2 võtab vastu juba ühendatud voo oma valiku sock kaudu. Lase socksv5-l luua marsruut SSH-serverini ja anna see voog seejärel SSH-le:

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 on rakenduse olemasolev SSH-konfiguratsioon, sealhulgas konto, võti ja hostVerifieri poliitika. SOCKS-i host ja port tähistavad vahendajat; sshConfig.host ja port tähistavad lõplikku SSH-teenust.

Näide kasutab SOCKS-i lõpp-punkti ilma autentimiseta. Avalikust internetist kättesaadava SSH-serveri jaoks võib SOCKS5-puhverserverite loend pakkuda kandidaate; igaüks peab siiski lubama SSH-sihtkohta ja -porti. Selle kasutajanime/parooli meetodi jaoks kasutage auths-is socks.auth.UserPassword(proxyUser, proxyPassword). Need mandaadid ei asenda SSH-kontot.

localDNS false edastab sihtkoha hostinime SOCKS-serverile, kasutades sihtkoha lahendamist puhverserveri poolel. Ilma selle selge valikuta proovib socksv5 dokumenteeritud vaikeväärtus kohalikku lahendamist.

SOCKS-i tagasikutse töötab pärast läbirääkimisi. Enne SFTP-i taotlemist oodake ssh2 ready-sündmust. Need on eraldi õnnestunud etapid; ei TCP-ühendus puhverserveriga ega SOCKS-i vastus ei tõenda, et SSH-autentimine või SFTP-alamsüsteem õnnestus.

Seotud artiklid