将 sftp 与 socks5 代理一起使用 node.js
Using sftp with socks5 proxy node.js
我一直在考虑使用 ssh2 模块进行日志的 sftp 传输。然而,托管我们应用程序的云服务使用了一个旋转的 IP 地址范围。所以想集成给我们静态 ip 地址的 socks5 代理服务。我正在使用 socksjs 模块来建立 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 的创建者)来连接 throw 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')
});
});
我一直在考虑使用 ssh2 模块进行日志的 sftp 传输。然而,托管我们应用程序的云服务使用了一个旋转的 IP 地址范围。所以想集成给我们静态 ip 地址的 socks5 代理服务。我正在使用 socksjs 模块来建立 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 的创建者)来连接 throw 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')
});
});