mongodb - 如何使用代理跳转(堡垒主机)通过 ssh 隧道连接到 mongodb 服务器
问题描述
我有一个像这样的 ssh 配置文件。我有一个从 test2 到 host1 的代理跳转。
Host host1
Hostname xxxxxx.us-east-1.elb.amazonaws.com
Port 2222
User xxxx
IdentityFile ~/.ssh/cert
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
KeepAlive yes
ServerAliveInterval 30
ServerAliveCountMax 30
Host test2
Hostname xx.xxx.xx.xxx
ProxyCommand ssh.exe host1 -q -W %h:%p host1
User ubuntu
IdentityFile ~/.ssh/cert
KeepAlive yes
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
ServerAliveInterval 30
ServerAliveCountMax 30
我的 mongo 数据库主机:xxx-nonprod.cluster-xx.us-east-1.docdb.amazonaws.com
我必须使用主机test2使用 SSH 隧道到 Mongodb ,但它使用ProxyCommand使用代理跳转
我想使用 SSH Tunneling 和Mongo DB Compass以及节点 js mongoose连接到 mongodb 。
如何使用 Mongo DB Compass 进行连接?
在这里,我没有输入ProxyCommand详细信息的选项。
如何使用节点 js 进行连接?
我正在使用隧道 ssh,我有一个参考代码,
var config = {
username:'ubuntu',
host:'xx.xxx.xx.xxx',
agent : process.env.SSH_AUTH_SOCK,
privateKey:require('fs').readFileSync('~/.ssh/cert'),
port:22,
dstPort:27017
};
var server = tunnel(config, function (error, server) {
});
在这里以及如何在此处输入ProxyCommand详细信息?或者请建议任何解决此问题的节点 js 包。
解决方案
我现在可以连接到数据库了。
从终端通过堡垒到数据库建立隧道。
ssh -L 27017:{mongodb-host}:27017 host1
我可以从另一个终端的 localhost 通过隧道连接到数据库。
mongo --host 127.0.0.1:27017 --username {username} --password {password}
所以我也可以使用连接字符串通过猫鼬进行连接。 mongodb://dbadmin:{用户名}:{密码}@localhost:27017
推荐阅读
- flutter - 是否有可能以字节为单位获取对象的大小,尤其是列表
或地图 ? - testing - 通过命令在 TestCafé Studio 中运行测试
- c - 无法在共享库中附加共享内存
- python - 从nodejs产生的python进程读取输出的问题
- php - 从WordPress中的最后一篇文章中获取第一张图片
- c - 计算C中一个句子中单词的出现次数
- c# - Microsoft Office interop Excel 中是否有任何选项隐藏保存对话框?
- javascript - 如何使用一些可选模块构建多包节点模块
- javascript - 如何在 Jquery 选择器中使用变量
- google-apps-script - 问:如何将 URL 域列表转换为完整 url