ssh2 ń gba ìṣàn tí ó ti so tẹ́lẹ̀ nípasẹ̀ àṣàyàn sock rẹ̀. Jẹ́ kí socksv5 dá ọ̀nà sí apèsè SSH, lẹ́yìn náà fi ìṣàn yẹn fún 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 ni ìṣètò SSH tí ó wà tẹ́lẹ̀ fún ohun èlò náà, pẹ̀lú àkọsílẹ̀ rẹ̀, kọ́kọ́rọ́ àti ìlànà hostVerifier. Olùgbàlejò SOCKS àti ibùdó fi alárinà hàn; sshConfig.host àti port fi iṣẹ́ SSH gbẹ̀yìn hàn.

Àpẹẹrẹ náà ń lo ibi ìparí SOCKS láìsí ìjẹ́rìí. Fún apèsè SSH tí a lè dé láti Íńtánẹ́ẹ̀tì gbogbo ènìyàn, àkójọ aṣojú SOCKS5 lè pèsè àwọn olùdíje; kọ̀ọ̀kan ṣì gbọ́dọ̀ gba ibi SSH àti ibùdó láàyè. Fún ọ̀nà orúkọ olùlò/ọ̀rọ̀ ìpamọ́ rẹ̀, lo socks.auth.UserPassword(proxyUser, proxyPassword) nínú auths. Àwọn ẹ̀rí yẹn kò rọ́pò àkọsílẹ̀ SSH.

localDNS false ń fi orúkọ olùgbàlejò ibi tó ń lọ ránṣẹ́ sí apèsè SOCKS, ní lílo ìpinnu ibi ní ẹ̀gbẹ́ aṣojú. Láìsí àṣàyàn kedere yẹn, àkọ́kọ́ àdáni tí a kọ sílẹ̀ fún socksv5 ń gbìyànjú ìpinnu ibílẹ̀.

Ìpè padà SOCKS ń ṣiṣẹ́ lẹ́yìn ìdúnàdúrà. Dúró de ìṣẹ̀lẹ̀ ready ti ssh2 kí o tó béèrè SFTP. Ìwọ̀nyí jẹ́ àwọn ìpele àṣeyọrí ọ̀tọ̀ọ̀tọ̀; bẹ́ẹ̀ ni ìsopọ̀ TCP sí aṣojú tàbí ìdáhùn SOCKS kò fi hàn pé ìjẹ́rìí SSH tàbí ẹ̀ka SFTP ti ṣàṣeyọrí.

Àwọn àpilẹ̀kọ tó jọra