我的凭据与Robomongo完美搭配,但无法与node.js建立连接, 我尝试使用ssh2和tunnel-ssh npm模块建立连接,但均失败。 -mongo连接不需要密码 -ssh连接使用pem密钥进行
这是我与ssh2模块一起使用的代码,我可以正确建立隧道,但是mongo连接失败
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 });
和代码的隧道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); }); }); });
我不确定在建立隧道之后是使用常规的MongoDB连接字符串还是将数据库引用为localhost,例如 mongodb:// localhost:portnumber。 或 mongodb://databasepath.subpath.mongodbdns.com:27000
Localhost给我一个权限被拒绝的错误,后者给我超时
正如mscdex所提到的那样,ssh2不是用来与数据库建立ssh隧道连接的好模块。tunnel-ssh更合适。
这是我使用的配置选项:
dstPort:远程数据库连接端口
localPort:与dstPort相同,它将是用于本地计算机的端口
用户名:SSH用户名,
主机:SSH地址
dstHost:数据库连接网址(… mongodbns.com),
privateKey:SSH密钥
然后,一旦您的隧道连接,通过猫鼬连接到您的本地主机,例如mondodb:// localhost:27000(使用您在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 }