로그의 sftp 전달을 위해 ssh2 모듈을 사용하는 방법을 살펴 보았습니다. 그러나 우리 앱을 호스팅하는 클라우드 서비스는 회전하는 IP 주소 범위를 사용합니다. 따라서 고정 IP 주소를 제공하는 socks5 프록시 서비스를 통합하고 싶습니다. 나는 socks5 연결을 설정하기 위해 socksjs 모듈을 사용하고 있으며 프록시에 대한 연결을 얻고 있지만 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 연결 던져 SOCKS5 프록시에 대한 라이브러리 (이 SSH2의 창조자에서이다).
예:
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')
});
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다