gpt4 book ai didi

使用 Mongoose 到 MongoDB 的 Node.js SSH 隧道

转载 作者:IT老高 更新时间:2023-10-28 13:33:46 27 4
gpt4 key购买 nike

我有两个 Mongo DB。一个用于我的开发环境,一个用于生产,从我的 Robomongo 设置中可以看出:

Two Mongo DBs

生产数据库通过 SSH 隧道连接到我的 Digital Ocean 虚拟服务器,如此处所示(细节已明显改变)。当连接到我的生产网站/从我的生产网站连接时,此设置工作正常:

SSH Tunnel Settings

我现在正在处理一个不同/相关的项目,需要将我的本地机器连接到我的生产> DB,所以我认为我需要使用 tunnel-ssh 之类的东西完成它。我关注了this answer例如,但我要么得到 Error: (SSH) Channel open failure: open failed 要么它正在连接到我的 Dev db(当我使用 27017 作为我的 dstHost/dstPort/localPort 时)。我一定是在想这个错误,或者我的配置很愚蠢。诚然,我是一个完全的 Mongo/Mongoose 新手,所以两者都是可能的。有什么建议吗?

var fs = require("fs");
var mongoose = require('mongoose');
var tunnel = require('tunnel-ssh');

//===== db connection =====

var config = {
username:'my.username',
host:'my.ip.address',
agent : process.env.SSH_AUTH_SOCK,
privateKey:require('fs').readFileSync('/Users/myusername/.ssh/id_rsa'),
port:22,
dstHost:'mongodb://localhost:27000/mydbname',
dstPort:27000,
localHost:'127.0.0.1',
password:'mypassword',
localPort: 27000
};

var server = tunnel(config, function (error, server) {
if(error){
console.log("SSH connection error: " + error);
}
mongoose.connect('mongodb://localhost:27000/mydbname');

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'DB connection error:'));
db.once('open', function() {
// we're connected!
console.log("DB connection successful");
// console.log(server);
});
});

提前致谢!

最佳答案

最终的工作配置以供将来引用。感谢 mscdex——我只需要提供 正确的 dstPort 并将其包含在我的 Mongo URI 字符串(27017)中。很简单。希望这会有所帮助。

var config = {
username:'myusername',
host:'my.ip.address',
agent : process.env.SSH_AUTH_SOCK,
privateKey:require('fs').readFileSync('/Users/myusername/.ssh/id_rsa'),
port:22,
dstPort:27017,
password:'mypassword'
};

var server = tunnel(config, function (error, server) {
if(error){
console.log("SSH connection error: " + error);
}
mongoose.connect('mongodb://localhost:27017/mydbname');

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'DB connection error:'));
db.once('open', function() {
// we're connected!
console.log("DB connection successful");
});
});

关于使用 Mongoose 到 MongoDB 的 Node.js SSH 隧道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40903566/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com