ssh2 hukubali mtiririko uliounganishwa tayari kupitia chaguo lake la sock. Ruhusu socksv5 iunde njia kuelekea seva ya SSH, kisha mpe SSH mtiririko huo:

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 ni usanidi wa SSH uliopo wa programu, ukiwemo akaunti, ufunguo na sera ya hostVerifier. Mtoa huduma na bandari ya SOCKS huonyesha mpatanishi; sshConfig.host na port huonyesha huduma ya mwisho ya SSH.

Mfano unatumia kituo cha SOCKS bila uthibitishaji. Kwa seva ya SSH inayofikiwa kutoka intaneti ya umma, orodha ya proksi za SOCKS5 inaweza kutoa wagombea; kila mmoja bado anahitaji kuruhusu lengwa na bandari ya SSH. Kwa mbinu yake ya jina la mtumiaji/nenosiri, tumia socks.auth.UserPassword(proxyUser, proxyPassword) katika auths. Vitambulisho hivyo havibadilishi akaunti ya SSH.

localDNS false hupeleka jina la mtoa huduma lengwa kwa seva ya SOCKS, kwa kutumia utambuzi wa lengwa upande wa proksi. Bila chaguo hilo la wazi, chaguo-msingi lililoandikwa la socksv5 hujaribu utambuzi wa ndani.

Callback ya SOCKS huendeshwa baada ya majadiliano. Subiri tukio ready la ssh2 kabla ya kuomba SFTP. Hizi ni hatua tofauti zilizofanikiwa; muunganisho wa TCP kwa proksi au jibu la SOCKS haithibitishi kuwa uthibitishaji wa SSH au mfumo mdogo wa SFTP umefanikiwa.

Makala zinazohusiana