У меня два компьютера: Ubuntu1 и Ubuntu2. Ubuntu1 запускает MongoDB с базой данных Sacred3. Я хочу запустить соединение от U2 к U1 через ssh и сохранить там результаты моих экспериментов.
Что я пробовал и потерпел неудачу: 1. Я установил базу данных mongo, создал 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 ubuntu@106.969.696.969
// (с правильным ip)
Итак, насколько я понимаю, если я подключусь к моему локальному хосту: 6666, он будет перенаправлен на 106.969.696.969:27017
После этого я провожу эксперимент с Священный каркас:
python exp1.py -m localhost: 6666: sacred3
и это должно записать эксперимент в удаленную БД, ОДНАКО я получаю:
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused
что сводит меня с ума. пожалуйста помоги!
Ваша ошибка говорит, что pymongo ищет mongod на localhost:27017
pymongo.errors.ServerSelectionTimeoutError: localhost:27017
Но его там нет, вы отправили его localhost:6666
. Строка подключения в вашем коде должна иметь жестко заданное значение по умолчанию, которое вам нужно будет отредактировать.
Или, если на localhost: 27017 ничего не запущено, вы можете напрямую туннелировать:
ssh -fN -i ~/.ssh/sacred_key-pair.pem -L 27017:localhost:27017 ubuntu@106.969.696.969
Другие полезные команды:
ps aux | grep ssh
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