【问题标题】:How do I access remote CouchDB created with Bitnami如何访问使用 Bitnami 创建的远程 CouchDB
【发布时间】:2019-10-16 04:50:45
【问题描述】:

我在 AWS 上设置了一个 Bitnami CouchDB 堆栈。 AWS EC2 控制台中的一切似乎都很好。我已经按照我能找到的关于如何为此实现配置 PuTTY 的所有指示进行操作,以便我可以通过 SSH 访问 CouchDB。 PuTTY 似乎也运行良好。我能够通过 SSH 连接到远程服务器并在那里执行命令,所以我假设 SSH 隧道正在工作。我遵循了这些指示: https://docs.bitnami.com/aws/faq/get-started/access-ssh-tunnel/ https://docs.bitnami.com/google/infrastructure/couchdb/administration/connect-remotely/

为了访问 CouchDB,看来我必须将目标端口(在 PuTTY 中)更改为 5984,我已经这样做了: https://community.bitnami.com/t/cannot-access-couchdb-from-my-pc-https/53770/2

然后,我启动 PuTTY,并打开连接。同样,它似乎可以工作,但是当我尝试浏览到 ServerIP:5984 时,它永远不会连接。我能想到的最好的办法是我需要以某种方式将 Chrome 设置为使用隧道,但我不知道这是否正确。

任何想法、建议或重定向都会非常有帮助。

谢谢。

我已经走到了尽头,准备尝试(不寒而栗)手动安装 CouchDB,因为我现在似乎在手动执行所有操作,但它仍然无法正常工作。

编辑: 这是我的发现:使用 PuTTY 和我上面引用的说明,我可以创建一个 SSH 隧道。然后,使用 Chrome,我转到我的 localhost:8888(请参阅下面的评论——这是通过 SSH 连接到远程(即服务器)端口 5984 的本地(即我的 Windows 机器)端口)并返回“未经授权” '。如果我在 PuTTY 终端窗口中使用 curl,并包含我的数据库凭据(即 curl -X GET http://admin:{password}@localhost:5984),我可以访问 CouchDB。那么问题就变成了:如何从 Chrome 访问 CouchDB 并插入我的凭据(我什至尝试过 Postman),以便我可以访问 Fauxton 进行测试和开发。

【问题讨论】:

  • Bitnami工程师在这里,你发现,服务器的端口默认没有在防火墙中打开。这就是为什么我们建议用户创建一个 SSH 隧道来访问服务器。如果您创建了隧道,则需要使用“localhost:5984”而不是“ServerIP:5984”,这样您将使用已创建的 SSH 隧道连接到服务器。我希望这些信息对您有所帮助
  • @Jota Martos 感谢您的回复。我注意到你们 Bitnami 工程师很擅长在论坛上回复,我很感激。我应该提到我使用的是 Windows 机器并且我在本地安装了 CouchDB,所以当我执行 localhost:5984 时,它会显示我的本地数据库的 Fauxton。但是,在 PuTTY 中,如果我将源端口设置为 8888,将目标端口设置为 localhost:5984,然后(在 Chrome 中)浏览到 localhost:8888(我认为会使用 SSH 隧道并连接到服务器端口 5984,它会返回{"error":"unauthorized","re​​ason":"需要验证。"

标签: amazon-ec2 ssh couchdb bitnami ssh-tunnel


【解决方案1】:

所以,我想我已经弄清楚了。

Bitnami 文档可帮助您正确配置 PuTTY 以启用本地计算机和远程服务器之间的 SSH 隧道(请参阅:https://docs.bitnami.com/aws/faq/get-started/access-ssh-tunnel/)。我对这条隧道的理解是,它在本地机器上的特定端口和远程服务器上的特定端口之间创建了一个安全管道。此隧道由您生成的 SSH 密钥保护。当我将 Bitnami CouchDB 安装到 AWS 时,Bitnami 控制台使整个过程变得非常简单,包括 SSH 密钥生成过程。 Bitnami 设置还在服务器上创建了我的 CouchDB,并使用新的管理员密码保护它(稍后会详细介绍)。

然后我遵循了更多说明如何从远程计算机连接到 CouchDB(请参阅https://docs.bitnami.com/google/infrastructure/couchdb/administration/connect-remotely/)。这是事情有点偏离轨道的地方,或者至少他们对我做了。 Bitnami(明智地)不建议向外界开放服务器端口,而是建议使用 SSH 隧道方法。说得通。但是,有关远程连接的说明假定您将在防火墙中打开端口。一旦您发现您不想这样做并且您没有打开端口,而是通过 SSH 安全连接,您就取得了进展,但仍然只完成了一半。

然后,登录服务器的 SSH 进程就可以完美运行了。我打开 PuTTY,加载保存的会话并打开 SSH,然后我就进入了。我可以通过 PuTTY 终端完美地访问服务器及其文件。所以,然后我尝试通过 Chrome 访问 CouchDB。我在地址栏中输入:http://localhost:8888。这是指我的本地主机和端口(即不是服务器的)而不是服务器的端口。服务器的端口通过 PuTTY 中的 SSH 隧道配置映射到 5984(参见:https://community.bitnami.com/t/cannot-access-couchdb-from-my-pc-https/53770)。这可行,但我收到需要授权的消息。这是因为创建了管理员用户和密码的设置过程以及配置问题,这是难题的最后一块(至少对我而言)。

如果您在服务器上编辑 CouchDB 的 local.ini 文件,并将 [chttpd] 值“require_valid_user=true”更改为“require_valid_user=false”,则一切都将在您的浏览器中正常运行(一旦您创建了 SSH当然是隧道),您可以访问 Fauxton。我通过反复试验发现了这一点,但这篇文章证实了这一点:https://blog.couchdb.org/2018/02/03/couchdb-authentication-without-server-side-code/

我仍然非常感谢任何有关此答案的 cmets。特别是,关于我可能通过更改将有效用户更改为 false 而创建的任何可能的安全漏洞的任何 cmets。我知道这允许未经身份验证的用户访问数据库,但是数据库由管理员密码保护,服务器由 SSH 保护,并且没有打开防火墙端口,有人可以这样做吗?

【讨论】:

  • 您好,我创建了 SSH 隧道,并且可以使用 API 和命令行从应用程序获取信息:curl http://user:PASSWORD@localhost:5984curl http://user:PASSWORD@localhost:5984/_all_dbs。但是,我无法通过浏览器或尝试连接到 Fauxton 来实现这一点。我会将信息转发给我们的工程团队,他们会查看我们的配置
  • 嗨。我能够使用 Chrome 插件 chrome.google.com/webstore/detail/modheader/… 进行连接。就我而言,凭据是user:elSonl16FRQr' so I had to add as a header 'Authorization: Basic dXNlcjplbFNvbmwxNkZSUXI=。然后它工作了
猜你喜欢
  • 1970-01-01
  • 2016-02-02
  • 2018-01-26
  • 1970-01-01
  • 2019-06-29
  • 2015-04-12
  • 1970-01-01
  • 2018-07-16
  • 2018-06-12
相关资源
最近更新 更多