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 ସବସିଷ୍ଟମ୍ ସଫଳ ହେଲା ବୋଲି ପ୍ରମାଣ କରେ ନାହିଁ।