如何使用Node.js建立与MongoDB数据库的SSH隧道连接

我的凭据与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

}

以上是 如何使用Node.js建立与MongoDB数据库的SSH隧道连接 的全部内容, 来源链接: utcz.com/qa/413581.html

回到顶部