ssh2 prijíma už pripojený tok cez svoju voľbu sock. Nechajte socksv5 vytvoriť trasu k serveru SSH a potom tento tok odovzdajte 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 je existujúca konfigurácia SSH aplikácie vrátane účtu, kľúča a pravidla hostVerifier. Hostiteľ a port SOCKS označujú prostredníka; sshConfig.host a port označujú konečnú službu SSH.

Príklad používa koncový bod SOCKS bez overovania. Pre server SSH dostupný z verejného internetu môže zoznam proxy SOCKS5 poskytnúť kandidátov; každý z nich však musí povoliť cieľ a port SSH. Pri metóde používateľské meno/heslo použite socks.auth.UserPassword(proxyUser, proxyPassword) v auths. Tieto údaje nenahrádzajú účet SSH.

localDNS false odovzdá názov cieľového hostiteľa serveru SOCKS a použije preklad cieľa na strane proxy. Bez tejto výslovnej voľby dokumentované predvolené nastavenie socksv5 skúša miestny preklad.

Spätné volanie SOCKS sa spúšťa po dohodnutí. Pred žiadosťou o SFTP počkajte na udalosť ready aplikácie ssh2. Ide o samostatné úspešné fázy; ani TCP spojenie s proxy, ani odpoveď SOCKS nepreukazujú, že overenie SSH alebo subsystém SFTP uspeli.

Súvisiace články