Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过ssh隧道将数据保存到远程mongoDB?(连接被拒绝)_Mongodb_Ubuntu_Ssh_Ssh Tunnel_Python Sacred - Fatal编程技术网

如何通过ssh隧道将数据保存到远程mongoDB?(连接被拒绝)

如何通过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

我有两台电脑: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: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,现在它成功了!请将此评论添加到您的答案中,以便其他人可以看到。完成。然后,您还可以使用第二个错误更新您的问题,以便它显示在该错误的搜索结果中。