【发布时间】:2016-11-25 09:16:22
【问题描述】:
我的凭据与 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 给了我一个权限被拒绝的错误,后者给了我一个超时
【问题讨论】:
标签: node.js mongodb ssh mongoose ssh-tunnel