我已按如下方式设置了我的mongod.conf,因此它只允许localhost连接。
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
port: 27017
bindIp: 127.0.0.1
然后我希望我的网站ssh到mongodb,所以端口必须转换为localhost。
但是,如何将其与mongoose的连接功能集成?
mongoose.connect(configDB.url, function(err){
if (err){
console.log('Error connecting to mongodb: ' + err)
}
});
我找到了以下命令,但我不确定这是否是我需要的:
ssh -L 4321:localhost:27017 -i ~/.ssh/ssh_key user@ip-adress
这应该通过端口4321转发给localhost吧?所以我想我在nodejs mongoose的connect函数中需要这样的东西。我曾尝试在mongodb安全教程上阅读此内容,但我根本无法将其指令链接到nodejs。有这方面经验的人吗?
答案 0 :(得分:5)
你快到了。设置独立于节点的隧道:
ssh -Nf -p [db_server_ssh_port] [mongo_user]@[mongo_domain] -L \
[local_db_port]:localhost:[remote_db_port]
然后在节点内,使用[local_db_port]:
连接到mongomongoose.connect(
"mongodb://localhost:[local_db_port]/[db_name]",
{"pass":"[db_pwd]"}
)
发送到Web服务器上[local_db_port]的所有流量将通过隧道发送到[mongo_domain]上的[remote_db_port]端口。以下帖子提供了更多信息。它连接到MySQL数据库,但原理是一样的。
答案 1 :(得分:0)
独立于节点设置隧道:
ssh -L [your given port]:localhost:27017 [username of ssh]@[ip address of ssh matchine] -f -N
之后你已经为mongo数据库包含了你的给定端口。 在nodejs中你必须像这样设置mongoose连接
'mongodb://localhost:[your given port number]/[database name]'
享受它