SOCKS арқылы ашылған сокетті ssh2-ге беріңіз
Алдымен SOCKS қосылымын келісіп алыңыз, содан кейін SFTP ішкі жүйесін ашпас бұрын оның межелі сокетін ssh2-ге өткізіңіз.
ssh2 өзінің sock опциясы арқылы әлдеқашан қосылған ағынды қабылдайды. socksv5 SSH серверіне маршрут орнатсын, содан кейін сол ағынды 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 — қолданбаның қолданыстағы SSH конфигурациясы, оның ішінде тіркелгі, кілт және hostVerifier саясаты. SOCKS хосты мен порты делдалды көрсетеді; sshConfig.host пен port соңғы SSH қызметін көрсетеді.
Мысал аутентификациясыз SOCKS соңғы нүктесін пайдаланады. Жалпыға қолжетімді интернеттен қол жеткізуге болатын SSH сервері үшін SOCKS5 проксилер тізімі үміткерлерді ұсына алады; олардың әрқайсысы әлі де SSH межесі мен портына рұқсат беруі керек. Оның пайдаланушы аты/құпия сөз әдісі үшін auths ішінде socks.auth.UserPassword(proxyUser, proxyPassword) қолданыңыз. Бұл тіркелгі деректері SSH тіркелгісін алмастырмайды.
localDNS false межелі хост атауын SOCKS серверіне жеткізеді және прокси жағындағы межені шешуді пайдаланады. Осы айқын таңдау болмаса, socksv5 құжатталған әдепкісі жергілікті шешуді байқап көреді.
SOCKS кері шақыруы келіссөзден кейін орындалады. SFTP сұрамас бұрын ssh2-нің ready оқиғасын күтіңіз. Бұл бөлек сәтті кезеңдер; проксиге TCP қосылымы да, SOCKS жауабы да SSH аутентификациясының немесе SFTP ішкі жүйесінің сәтті болғанын дәлелдемейді.