Jou ssh2 de socket dy't fia SOCKS iepene is
Underhannelje earst de SOCKS-ferbining en jou dan syn bestimming-socket oan ssh2 foar't it SFTP-subsysteem iepene wurdt.
ssh2 akseptearret in al ferbûne stream fia syn sock-opsje. Lit socksv5 de rûte nei de SSH-tsjinner oanlizze en jou dy stream dan oan 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 is de besteande SSH-konfiguraasje fan 'e applikaasje, ynklusyf har akkount, kaai en hostVerifier-belied. De SOCKS-host en -poart wize de tuskenpersoan oan; sshConfig.host en port wize de definitive SSH-tsjinst oan.
It foarbyld brûkt in SOCKS-einpunt sûnder autentikaasje. Foar in SSH-tsjinner dy't fan it iepenbiere internet berikber is, kin de SOCKS5-proxy-list kandidaten leverje; elk moat noch altyd de SSH-bestimming en -poart tastean. Brûk foar syn brûkersnamme/wachtwurdmetoade socks.auth.UserPassword(proxyUser, proxyPassword) yn auths. Dy bewiisstikken ferfange it SSH-akkount net.
localDNS false jout de bestimming-hostnamme oan de SOCKS-tsjinner, mei bestimming-oplossing oan 'e proxykant. Sûnder dy eksplisite kar besiket de dokumintearre standert fan socksv5 lokale oplossing.
De SOCKS-callback rint nei de ûnderhanneling. Wachtsje op 'e ready-barren fan ssh2 foar't SFTP oanfrege wurdt. Dit binne aparte suksesfolle fazen; noch in TCP-ferbining nei de proxy noch in SOCKS-antwurd bewizen dat SSH-autentikaasje of it SFTP-subsysteem slagge is.