如何为远程连接启用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服务器,一切就绪
-
在版本>= 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":})})
-
此外,除了身份验证,授权和第三层防火墙限制之外,强烈建议启用传输加密以防止可能的流量嗅嗅尝试…
但是从我在你的问题中看到的,如果你想在没有用户/密码的情况下远程访问,你可以只创建ssh隧道并重定向本地服务器mongo端口,以便在客户端机器中远程访问,并定义防火墙规则,以便本地服务器端口不能从服务器访问。这里的链接似乎回答了如何创建ssh隧道来访问您的mongodb远程服务器的详细信息:通过ssh同步MongoDB
可以简单地使用以下命令创建隧道:
ssh -L27018:CLIENT1:27017 SERVER1
从客户端访问mongodb服务器,如下所示:
mongo --port 27018