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
Post a Comment