아래 예를 사용하여 역 ssh 터널링을 수행 할 수 있습니다. 원격 호스트가 예제에서 공개 키와 개인 키 인증을 사용한다고 가정합니다. 그렇지 않은 경우 적절하게 예제를 변경하십시오. 잊지 말고 요청을 전달할 로컬 포트에서 수신 대기해야합니다.
var path = require('path');
var fs = require('fs');
var Connection = require('ssh2');
var net = require('net')
var c
var username = 'username'
var hostname = 'remote host IP or domain name'
var port = 22
var privKey = path.join(__dirname, 'path to private key', 'filename')
var localAddr = 'localhost'
var localPort = 'local port on which you want to receive the requests'
var remotePort = 'remote port that you want to forward'
var remoteAddr = '0.0.0.0'
c = new Connection()
c.on('connect', function() {
console.log('Connection :: connect')
})
c.on('tcp connection', function(info, accept, reject) {
console.log('TCP :: INCOMING CONNECTION: ' +
require('util').inspect(info));
var stream = accept()
var socket
stream.on('data', function(data) {
console.log('TCP :: DATA: ' + data);
})
stream.on('end', function() {
console.log('TCP :: EOF');
})
stream.on('error', function(err) {
console.log('TCP :: ERROR: ' + err);
})
stream.on('close', function(had_err) {
console.log('TCP :: CLOSED', had_err ? 'had error' : '');
})
stream.pause()
socket = net.connect(localPort, localAddr, function() {
stream.pipe(socket);
socket.pipe(stream);
stream.resume();
})
})
c.on('ready', function() {
console.log('Connection :: ready')
c.forwardIn(remoteAddr, remotePort, function(err) {
if (err) { throw err }
console.log('Forwarding connections from remote server on port 7070 to
node socket!');
})
})
c.on('error', function(err) {
console.log('Connection :: error :: ', err)
})
c.on('end', function() {
console.log('Connection :: end')
})
c.on('close', function(had_error) {
console.log('Connection :: close', had_error ? 'had error' : '')
})
var obj = {
host: hostname,
port: port,
username: username,
privateKey: fs.readFileSync(privKey).toString()
}
c.connect(obj)
확인이 하나 https://github.com/localtunnel/localtunnel, 나는 당신이 원격 로컬 전달 하시겠습니까, 또는 원격 지역에 – yeya
을 뭘 하려는지 정확히 생각하십니까? 질문하고 제목이 맞지 않습니다. – Kenster
로컬 셸에서 mongodump를 사용하여 원격 데이터베이스의 로컬 덤프를 만듭니다. – Andy59469