How to use Node.js to make a SSH tunneling connection to a MongoDB database -


my credentials work robomongo can't make connection node.js
have tried make connection using ssh2 , tunnel-ssh npm module , failed both times.
-the mongo connection not require password
-the ssh connection made pem key

this code i've used ssh2 module, can establish tunneling correctly mongo connection fails

var client = require('ssh2').client;  var conn = new client(); conn.on('ready', function() {     console.log('client :: ready');     //mongo connection         mongoose.connect('mongodb://localhost:27000/');         var db = mongoose.connection;         db.on('error', console.error.bind(console, 'connection error:'));         db.once('open', function() {             console.log("database connection established");             var users = db.collection('user');             var getallusers = function (date, callback){                 users.find({}).toarray(function(err,data){                     callback(data);                 })             };             getallusers(null, function (data){                 console.log('data :'+  data);             });         });     //end of mongo connection }).connect({     host: '**.**.**.**.**',     port: 22,     username: 'ec2-user',     privatekey: key }); 

and code tunnel-ssh

var config = {     dstport: 27000,     user: 'ec2-user',     host: '**.**.**.**.**',     privatekey: key };  var server = tunnel(config, function (error, server) {     if(error){         console.log("ssh connection error: " + error);     }     console.log('database connection initalizing');     mongoose.connect('mongodb://localhost:27000/');      var db = mongoose.connection;      db.on('error', console.error.bind(console, 'connection error:'));     db.once('open', function() {          console.log("database connection established");          var users = db.collection('user');         var getallusers = function (date, callback){             users.find({}).toarray(function(err,data){                 callback(data);             })         };         getallusers(null, function (data){             console.log(data);         });      }); }); 

i'm not sure whether use regular mongodb connection string after establishing tunnel or referring database localhost such as
mongodb://localhost:portnumber.
or
mongodb://databasepath.subpath.mongodbdns.com:27000

localhost gives me permission denied error, latter gives me timeout

as mscdex mentioned ssh2 isn't module use make ssh tunnel connection database. tunnel-ssh more appropriate.

here configuration options i've used :

dstport: remote database connection port

localport: same dstport, it'll port you'll use local machine

username: ssh username,

host: ssh address

dsthost: database connection url (...mongodbns.com) ,

privatekey: ssh key

then once tunnel connected connect via mongoose localhost such mondodb://localhost:27000 (use localport defined in localport)

var server = tunnel(config, function (error, server) {     if(error){         console.log("ssh connection error: " + error);     }     mongoose.connect('mongodb://localhost:27000/');     //...rest of mongoose connection } 

Comments