node.js - 通过nodejs通过ssh用户名/密码连接mongodb

标签 node.js 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 到 localhost:27017 超时

这里有什么问题?

最佳答案

可能是因为您在配置选项中缺少“dstHost”。

“dstHost”必须是目标服务器 URL。

来自官方tunnel-ssh doc

 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) {
      //.... 
    });

关于node.js - 通过nodejs通过ssh用户名/密码连接mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47590799/

相关文章:

c# - 如何在 C# 和 MongoDB 版本 ="2.2.3"中向 IMongoCollection 动态添加过滤器?

node.js - 从 Nightmare 请求中获取评估数据和数据Cookie

javascript - 无法将 undefined 或 null 转换为 Function.keys 处的对象

mongodb - 如何在没有 `db.repairDatabase()` 的情况下回收已删除的空间?

javascript - 如何根据Js数组中保存的Id获取分散在数组字段中的Object

arrays - MongoDB - 如何访问数组中的对象

javascript - 2 一种更新方法以交换日期 NodeJS、Mongoose+mongoDB

javascript - 如何使用 sitemap.js?

javascript - JSX 文件类型的 Nextjs 配置

mysql - 在使用 mysql 和 nodejs 时需要帮助