Como usar o Node.js para estabelecer uma conexão de encapsulamento SSH com um banco de dados MongoDB
Minhas credenciais funcionam perfeitamente com o Robomongo, mas não consigo fazer a conexão com o node.js
Eu tentei fazer a conexão usando o módulo ssh2 e tunnel-ssh npm e falhei as duas vezes.
-A conexão mongo não requer uma senha
-A conexão ssh é feita com uma chave pem
Este é o código que usei com o módulo ssh2, posso estabelecer o encapsulamento corretamente, mas a conexão do mongo falha
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
});
E o código do túnel-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);
});
});
});
Não tenho certeza se deve usar a seqüência de conexão regular do MongoDB após estabelecer o encapsulamento ou referir-se ao banco de dados como host local, como
mongodb: // localhost: portnumber.
ou
mongodb: //databasepath.subpath.mongodbdns.com: 27000
Localhost me dá um erro de permissão negada, o último me dá um tempo limite