如何通过ssh隧道访问远程aws lightail mongodb

问题描述 投票:1回答:1

我有一个Lightsail AWS实例,并运行MEAN堆栈。我有一个在不同网络上运行的现有MEAN堆栈。目前,节点server.js连接到localhost以获取mongo位(在同一台机器上),我想要做的就是将localhost替换为与我的AWS远程服务器上运行的mongo的连接。

我理解,出于安全原因,最好ssh隧道这个连接,我认为我很熟悉。

到目前为止我所做的是:

在托管节点服务器(远程数据库)的计算机上的控制台中,我运行了:

ssh -L 8181:127.0.0.1:80 -i ~/LightsailDefaultPrivateKey-eu-west-2.pem [email protected] -N

然后我可以使用localhost:8181 / rockmongo ... yay从本地机器浏览到RockMongo UI。

如果我然后运行以下:

ssh -L 8181:127.0.0.1:27017 -i ~/LightsailDefaultPrivateKey-eu-west-2.pem [email protected] -N

(27017是mongo端口)

然后尝试使用以下命令从我的远程计算机访问数据库:

mongo --username XXXXXX --password XXXXXX 31.16.56.125:8181/testdata

我收到以下错误:

〜] 2017-12-28T22:11:09.791 + 0000错误:无法连接到服务器31.16.56.125:8181(31.16.56.125),src / mongo / shell / mongo.js连接尝试失败:148异常:connect失败

我做错了吗? ie是仅用于http连接的隧道而不是mongo命令行使用?我是否需要以其他方式测试连接?

我已经谷歌搜遍了这个地方并没有太多运气(许多AWS文档建议在防火墙上打一个洞 - 哪个人不能再做了!)

mongodb ssh-tunnel amazon-lightsail
1个回答
0
投票

好的,我(部分)解决了这个问题,有些事情是错的。

1)mongo客户端是2.6,在AWS上运行的mongo是3.4。升级这解决了一些问题 - 因为我得到了一个更有意义的错误消息。

我遇到的一件事就是apt-get似乎执行了更新,但发出mongo命令时报告的版本仍为2.6。

要解决这个问题,我必须运行sudo apt-get purge mongodb-org*(注意星号)。然后执行更新....如果您需要这样做,请按照以下说明操作:https://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-ubuntu/

2)这个命令

mongo --username XXXXXX --password XXXXXX 31.16.56.125:8181/testdata

不会工作,因为我已经省略了'admin'而没有指定localhost!

mongo admin --username XXXXXX --password XXXXXX localhost:8181/testdata

不起作用,并给出以下输出。

2018-01-03T22:00:42.380+0000 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: errno:111 Connection refused
2018-01-03T22:00:42.380+0000 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:229:14
@(connect):1:6

我可以开始工作的唯一命令是:

mongo admin --username XXXXXX --password XXXXXX --port 8181

默认主机是localhost,所以在这种情况下它使用隧道,这也只是连接到测试数据库,然后你可以从那里管理。

我没有深究的是主机的规范:port / db作为参数,根据运行mongo --help的输出

usage: mongo [options] [db address] [file names (ending in .js)]
db address can be:
  foo                   foo database on local machine
  192.169.0.5/foo       foo database on 192.168.0.5 machine
  192.169.0.5:9999/foo  foo database on 192.168.0.5 machine on port 9999
© www.soinside.com 2019 - 2024. All rights reserved.