使用sftp和socks5代理node.js

我一直在寻找使用ssh2模块sftp运输日志。 然而,托pipe我们的应用程序的云服务使用旋转的IP地址范围。 所以想要整合给我们静态IP地址的socks5代理服务。 我正在使用socksjs模块来build立socks5连接,我正在连接到代理服务器,但我想我已经注入了这个套接字连接,以便sftp使用错误。

干杯,

var sockConn = new SocksConnection(connTargetSettings, connProxySettings); connTargetSettings.sock = sockConn.outSocket; var conn = new ssh2.Client(); conn.on("ready", function() { conn.sftp(function(err, sftp) { if (err) throw err; // you'll be able to use sftp here sftp.readdir("/", function(err, list) { if (err) throw err; // List the directory in the console console.dir(list); // Do not forget to close the connection, otherwise you'll get troubles conn.end(); }); // Use sftp to execute tasks like .unlink or chmod etc }); }).connect(connTargetSettings); 

你可以使用socksv5库(它是从ssh2的创build者)连接扔socks5代理。

例:

 var socks = require('socksv5'), SSHClient = require('ssh2').Client; socks.connect({ host: 'ssh.example.org', // destination port: 22, proxyHost: '127.0.0.1', proxyPort: 1080, auths: [ socks.auth.None() ] }, function(socket) { var conn = new SSHClient(); conn.on('ready', function() { conn.exec('uptime', function(err, stream) { if (err) throw err; stream.on('close', function(code, signal) { conn.end(); }).on('data', function(data) { console.log('STDOUT: ' + data); }).stderr.on('data', function(data) { console.log('STDERR: ' + data); }); }); }).connect({ sock: socket, username: 'frylock', privateKey: require('fs').readFileSync('/here/is/my/key') }); });