通过nodejs通过ssh用户名/密码连接到mongodb

我试图通过如下所示通过nodejs通过SSH用户名/密码连接到Mongodb:

var mongoose = require('mongoose'); var tunnel = require('tunnel-ssh'); var config = { username : 'xyz', host: 'xx-xxx-xx.com', port:22, password:'xxx', dstPort:27017, localPort:27017 }; console.log(tunnel); var server = tunnel(config, function (error, server) { if(error){ console.log("SSH connection error: " + error); } console.log(server); mongoose.connect('mongodb://localhost:27017/myDB'); var db = mongoose.connection; console.log(db); db.on('error', console.error.bind(console, 'DB connection error:')); db.once('open', function() { console.log("DB connection successful"); }); }); 

但我得到如下错误:数据库连接错误:{MongoError:连接0到本地主机:27017超时

这里有什么问题?

可能是因为你在configuration选项中缺less'dstHost'。

'dstHost'必须是目标服务器的URL。

从官方隧道ssh文档

  var config = { username:'root', Password:'secret', host:sshServer, port:22, dstHost:destinationServer, dstPort:27017, localHost:'127.0.0.1', localPort: 27000 }; var tunnel = require('tunnel-ssh'); tunnel(config, function (error, server) { //.... });