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 መድረሻውንና ወደቡን መፍቀድ አለበት። ለተጠቃሚ ስም/የይለፍ ቃል ዘዴው socks.auth.UserPassword(proxyUser, proxyPassword) ን በ auths ውስጥ ይጠቀሙ። እነዚያ ምስክሮች የ SSH መለያውን አይተኩም።

localDNS false የመድረሻውን አስተናጋጅ ስም ለ SOCKS አገልጋዩ ያስተላልፋል፣ በፕሮክሲ በኩል የመድረሻ መለያ መፈለግን ይጠቀማል። ያለዚህ ግልጽ ምርጫ የ socksv5 የተመዘገበው ነባሪ የአካባቢ መለያ መፈለግን ይሞክራል።

የ SOCKS መልሶ መጥሪያ ከድርድሩ በኋላ ይሠራል። SFTP ከመጠየቅዎ በፊት የ ssh2 ዝግጁ ክስተትን ይጠብቁ። እነዚህ የተለያዩ ስኬታማ ደረጃዎች ናቸው፤ ወደ ፕሮክሲው የ TCP ግንኙነትም ሆነ የ SOCKS መልስ የ SSH ማረጋገጫ ወይም የ SFTP ንዑስ ስርዓት መሳካቱን አያረጋግጥም።

ተዛማጅ ጽሑፎች