2

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

我了解,出于安全原因,最好使用 ssh 隧道此连接,我认为我对此很熟悉。

到目前为止我所做的是:

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

ssh -L 8181:127.0.0.1:80 -i ~/LightsailDefaultPrivateKey-eu-west-2.pem bitnami@31.16.56.125 -N

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

如果我然后运行以下命令:

ssh -L 8181:127.0.0.1:27017 -i ~/LightsailDefaultPrivateKey-eu-west-2.pem bitnami@31.16.56.125 -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 异常:连接失败的

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

我已经为此搜索了整个地方,但运气不佳(许多 AWS 文档建议在防火墙上打一个洞 - 再也不能这样做了!)

4

1 回答 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

将不起作用,因为我从中省略了“管理员”并且未指定本地主机!

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,所以在这种情况下它使用隧道,这也将只连接到测试数据库,然后您可以从那里进行管理。

我没有深入了解的是 host: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
于 2018-01-03T22:25:31.847 回答