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

ସମ୍ପର୍କିତ ପ୍ରବନ୍ଧ