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 ಉಪವ್ಯವಸ್ಥೆ ಯಶಸ್ವಿಯಾಯಿತು ಎಂದು ಸಾಬೀತುಪಡಿಸುವುದಿಲ್ಲ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು