Назад | Перейти на главную страницу

Как подключиться к удаленному mongoDB через ssh (через Sacred)? В соединении отказано

У меня два компьютера: 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

Другие полезные команды:

  • Список процессов 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