通过 SSH 端口转发连接到 AWS

Posted

技术标签:

【中文标题】通过 SSH 端口转发连接到 AWS【英文标题】:Connect to AWS over SSH portforward 【发布时间】:2018-07-01 05:44:49 【问题描述】:

我想连接到我的 AWS 实例并通过 localhost 连接到我的 MongoDB 数据库。 SSH 隧道似乎可以工作,但是当我尝试与 mongo 连接时,我收到连接失败错误。

SSH 隧道命令:

ssh -i <path to key> -N -L 27017:++++++++++.us-west-2.compute.amazonaws.com:27017 ++++++@++++++++++.us-west-2.compute.amazonaws.com

Mongo 客户端:

mongo -u +++++++ -p ++++++++++ mongodb://localhost:27017/+++++

MongoDB shell version v3.4.7
connecting to: mongodb://localhost:27017/++++++
2018-01-22T15:32:07.125+0100 E QUERY    [thread1] Error: network error while attempting to run command 'isMaster' on host 'localhost:27017'  :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed

然后我在隧道一侧得到:

channel 2: open failed: connect failed: Connection refused

我已经直接在服务器上尝试了 mongo 命令,然后它就可以正常工作了。

在我的 Robo T3 客户端上,有一个通过 SSH 连接的选项,并且连接工作正常。

非常感谢任何建议。

编辑

当我启动 mongo 客户端时,没有新行添加到 mongdb 日志文件中。这表明隧道没有发挥作用......

【问题讨论】:

【参考方案1】:

根据this documentation,当您尝试不使用 ssl 连接到 MongoDB 服务器时会发生此错误。

然后解决方案是使用 SSL 进行连接,这可以通过将 --ssl 添加到您的连接查询来完成(使其看起来像这样:mongo --ssl -u +++++++ -p ++++++++++ mongodb://localhost:27017/+++++)。

让我知道这是否适合你!

【讨论】:

您可以尝试另外两件事:-Try what is mentioned in this question,更新服务器或外壳版本-Try replacing localhost with the local ip,然后绑定它。 这无关紧要,因为Robo T3 客户端能够通过 SSH 隧道进行连接。所以服务器端应该没问题。 虽然这意味着更新解决方案不适用于您的情况,但它必须与直接连接不同。你能在/var/log/mongodb/mongod.log查看日志中的内容吗? 我更新了我的问题。没有添加新线路,因此隧道不起作用。 当您尝试通过带有详细标志 (-v) 的 ssh 连接时,输出是什么?

以上是关于通过 SSH 端口转发连接到 AWS的主要内容,如果未能解决你的问题,请参考以下文章

RMongo:使用端口转发连接到 mongoDB

[原创]SSH 隧道转发

SSH端口转发

Python套接字通过端口转发连接到服务器

如何修复 ngrok 转发端口?

端口已转发,但仍无法连接到 XAMPP