Fi socket tí SOCKS ṣí fún ssh2
Kọ́kọ́ dúnàdúrà lórí ìsopọ̀ SOCKS, lẹ́yìn náà fi socket ibi tó ń lọ fún ssh2 kí o tó ṣí ẹ̀ka SFTP.
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í.