Emaiozu ssh2ri SOCKS bidez irekitako socket-a
Lehenengo negozia ezazu SOCKS konexioa, eta gero pasa haren helburuko socket-a ssh2ri SFTP azpisistema ireki aurretik.
ssh2k sock aukeraren bidez jada konektatuta dagoen korrontea onartzen du. Utzi socksv5i SSH zerbitzarirako bidea ezartzen, eta gero eman korronte hori SSHi:
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 aplikazioaren lehendik dagoen SSH konfigurazioa da, kontua, gakoa eta hostVerifier politika barne. SOCKS ostalariak eta atakak bitartekaria adierazten dute; sshConfig.host eta port azken SSH zerbitzua adierazten dute.
Adibideak autentifikaziorik gabeko SOCKS amaiera-puntua erabiltzen du. Internet publikotik irisgarria den SSH zerbitzari baterako, SOCKS5 proxy zerrendak hautagaiak eman ditzake; bakoitzak SSH helmuga eta ataka baimendu behar ditu oraindik. Haren erabiltzaile-izena/pasahitza metodoarentzat, erabili socks.auth.UserPassword(proxyUser, proxyPassword) auths-en. Kredentzial horiek ez dute SSH kontua ordezkatzen.
localDNS false-k helmugako ostalari-izena SOCKS zerbitzariari pasatzen dio, proxy aldeko helmuga-ebazpena erabiliz. Aukera esplizitu hori gabe, socksv5en dokumentatutako lehenespenak tokiko ebazpena saiatzen du.
SOCKS callback-a negoziazioaren ondoren exekutatzen da. Itxaron ssh2ren ready gertaera SFTP eskatzen hasi aurretik. Etapa arrakastatsu bereiziak dira; proxyrako TCP konexioak ez eta SOCKS erantzunak ez dute frogatzen SSH autentifikazioa edo SFTP azpisistema ondo atera denik.