如何通过ssh隧道将数据保存到远程mongoDB?(连接被拒绝)
我有两台电脑:Ubuntu1和Ubuntu2。 Ubuntu1使用数据库Sacred3运行MongoDB。 我想通过ssh从U2连接到U1,并将实验结果存储在那里 我尝试过但失败了: 1.我安装了mongo DB,创建了sacred3,我有它的ssh密钥。 我编辑了如何通过ssh隧道将数据保存到远程mongoDB?(连接被拒绝),mongodb,ubuntu,ssh,ssh-tunnel,python-sacred,Mongodb,Ubuntu,Ssh,Ssh Tunnel,Python Sacred,我有两台电脑:Ubuntu1和Ubuntu2。 Ubuntu1使用数据库Sacred3运行MongoDB。 我想通过ssh从U2连接到U1,并将实验结果存储在那里 我尝试过但失败了: 1.我安装了mongo DB,创建了sacred3,我有它的ssh密钥。 我编辑了/etc/mongod.conf添加: #网络接口 净: 港口:27017 bindIp:0.0.0.0 然后我启用了端口转发 ssh-fN-i~/.ssh/key-pair.pem-L 6666:localhost:27017ubu
/etc/mongod.conf
添加:
#网络接口
净:
港口:27017
bindIp:0.0.0.0
然后我启用了端口转发
ssh-fN-i~/.ssh/key-pair.pem-L 6666:localhost:27017ubuntu@106.969.696.969
//(具有正确的ip)
因此,正如我所理解的,如果我连接到我的localhost:6666,它将被转发到106.969.696.969:27017
在那之后,我在做一个实验:
python exp1.py-m localhost:6666:sacred3
这将把实验写入远程数据库,但我得到:
pymongo.errors.ServerSelectionTimeoutError:localhost:27017:[Errno 111]连接被拒绝
这让我抓狂。请帮忙
#
exp1.py的以下内容:
from sacred import Experiment
from sacred.observers import MongoObserver
ex = Experiment()
ex.observers.append(MongoObserver.create())
def compute():
summ = layer1 - layer2
return summ
@ex.config
def my_config():
hp_list = [{"neurons" : [32,32] , "dropout": 1.0},
{"neurons" : [32,32] , "dropout": 0.7},
{"neurons" : [32,16] , "dropout": 0.9},
{"neurons" : [24,16] , "dropout": 0.9},
{"neurons" : [24,8] , "dropout": 0.9},
{"neurons" : [16,8] , "dropout": 0.9},
{"neurons" : [64,64] , "dropout": 0.9},
{"neurons" : [64,64] , "dropout": 0.7},
{"neurons" : [64,32] , "dropout": 0.9},
{"neurons" : [64,32] , "dropout": 0.7},
{"neurons" : [48,32] , "dropout": 0.9},
{"neurons" : [48,32] , "dropout": 0.7},
{"neurons" : [48,16] , "dropout": 0.9},
{"neurons" : [48,16] , "dropout": 0.7},]
n_epochs = 2
@ex.capture
def training_loop(hp_list, n_epochs):
for j in hp_list:
print("Epoch: ", n_epochs)
# layer1 = random.randint(18,68)
# layer2 = random.randint(18,68)
# layer3 = random.randint(18,68)
layer1 = j["neurons"][0]
layer2 = j["neurons"][1]
dropout_ratio = j["dropout"]
print("WHATS UUUUUP",j, layer1, layer2, dropout_ratio, sep="_")
# vae_training_loop_NN_DO(i, layer1, layer2, dropout_ratio )
@ex.automain
def my_main():
training_loop()
根据文档,看起来您正在创建两个观察者,或者使用代码中指定的
MongoObserver.create()
覆盖您用-m
传递的连接参数,该代码使用默认的mongo主机和端口localhost:27017
。您可以通过-m
参数或在代码中提供观察者连接,而不是两者都提供
尝试删除MongoObserver.create()
行,或硬编码连接参数:MongoObserver(url='localhost:6666',db_name='sacred3')
另外,看起来您的mongo主机是这样的,因此您还应该将ssh命令中的
localhost
替换为127.0.0.1
或[::1]
,例如ssh-fN-i~/.ssh/sorbital_key-pair.pem-L 6666:127.0.1:27017ubuntu@106.969.696.969
或ssh-fN-i~/.ssh/key-pair.pem-L 6666:[::1]:27017 ubuntu@106.969.696.969
看起来您没有正确地将端口传递给脚本,因此没有连接到localhost:27017而不是localhost:6666。这是什么意思?我使用python exp1.py-m localhost:6666:sacred3afaik运行脚本,并将-m
切换到脚本。。我们可以看到脚本的内容吗?我添加了exp1.py的内容,就像这里一样,我删除了ex.obsers.append(MongoObserver.create())行,现在我得到了以下错误:通道2:打开失败:连接失败:连接拒绝现在看起来您的mongo主机是。您是否可以尝试将ssh命令中的localhost
替换为127.0.0.1
或[::1]
,例如ssh-fN-i~/.ssh/skyright\u key-pair.pem-L 6666:127.0.0.1:27017ubuntu@106.969.696.969
Halleluyah,现在它成功了!请将此评论添加到您的答案中,以便其他人可以看到。完成。然后,您还可以使用第二个错误更新您的问题,以便它显示在该错误的搜索结果中。