如何通过 ssh(通过 Sacred)连接到远程 mongoDB?连接被拒绝

如何通过 ssh(通过 Sacred)连接到远程 mongoDB?连接被拒绝

我有两台电脑:Ubuntu1 和 Ubuntu2。Ubuntu1 运行 MongoDB 和数据库 Sacred3。我想通过 ssh 从 U2 连接到 U1 并在那里存储我的实验结果。

我尝试过但失败了:1. 我安装了 mongo DB,创建了 sacred3,我有它的 ssh 密钥。我编辑并/etc/mongod.conf添加:

# network interfaces net: port: 27017 bindIp: 0.0.0.0

然后我启用了端口转发

ssh -fN -i ~/.ssh/sacred_key-pair.pem -L 6666:localhost:27017 [email protected]//(使用正确的 IP)

因此,正如我理解的那样,如果我连接到我的 localhost:6666,它将被转发到 106.969.696.969:27017

所以在那之后,我做了一个实验神圣的框架

python exp1.py-m 本地主机:6666:sacred3

这应该将实验写入远程数据库,但是我得到:

pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused

这让我发疯了。请帮帮我!

答案1

你的错误表明 pymongo 正在寻找 mongodlocalhost:27017

pymongo.errors.ServerSelectionTimeoutError: localhost:27017

但它不在那里,您已将其转发到localhost:6666。代码中的连接字符串必须具有您需要编辑的硬编码默认值。

或者,如果 localhost:27017 上没有任何运行,您可以直接进行隧道传输:

ssh -fN -i ~/.ssh/sacred_key-pair.pem -L 27017:localhost:27017 [email protected]

其他有用的命令是

  • 列出 ssh 进程

ps aux | grep ssh

  • 哪个进程正在使用端口(本例中为 27107)

sudo netstat -lnpt | awk '$4 ~ /:27107/ {sub(/\/.*/, "", $7); print $7}'

  • 通过终止使用端口的进程来释放端口

kill <pid>

还绑定到本地主机,使用 0.0.0.0 使得任何可以访问服务器的地方的任何人都可以使用 mongodb。

net:
  port: 27017
  bindIp: 127.0.0.1

相关内容