如何启用密码认证远程连接和禁用它为本地MongoDB?



如何为远程连接启用user:password身份验证,并为来自localhost的所有内容禁用它?我在本地运行prod,我真的不想启用任何用户或密码身份验证,但我希望能够远程连接到我的DB来管理prod上的数据。

我如何为远程连接启用user:password身份验证,并为来自localhost的所有内容禁用它?

MongoDB不支持这种安排。

如果在部署中启用身份验证,则所有连接都必须进行身份验证。

你有两件事要做

1

- 允许远程连接到您的服务器设置防火墙规则

例如,如果您使用的是Linux,则可以使用

sudo ufw allow from REMOTE_MACHINE_IP_HERE to any port 27017

之后别忘了重新加载防火墙

2

- 编辑mongod.conf,设置允许连接的接口IP。

这意味着您不应该在此配置中允许localhot或127.0.0.1

在mongo.conf中执行

# network interfaces
net:
  port: 27017
  bindIp: mongodb_server_ip_here

重启mongodb服务器,一切就绪

  1. 在版本>= 3.6中,您可以从mongodb实例内部为每个用户添加额外的限制,如下所示:

    使用管理

    db.createUser ({用户:"restricted",pwd:"password"roles: [{role: "readWrite" db: "reporting"}),authenticationRestrictions: [{]clientSource:("40.0.0.0","12.0.0.0",serverAddress("120.0.0.0":})})

  2. 此外,除了身份验证,授权和第三层防火墙限制之外,强烈建议启用传输加密以防止可能的流量嗅嗅尝试…

但是从我在你的问题中看到的,如果你想在没有用户/密码的情况下远程访问,你可以只创建ssh隧道并重定向本地服务器mongo端口,以便在客户端机器中远程访问,并定义防火墙规则,以便本地服务器端口不能从服务器访问。这里的链接似乎回答了如何创建ssh隧道来访问您的mongodb远程服务器的详细信息:通过ssh同步MongoDB

可以简单地使用以下命令创建隧道:

ssh -L27018:CLIENT1:27017 SERVER1

从客户端访问mongodb服务器,如下所示:

mongo --port 27018

最新更新