как соединиться с mongodb сервером через туннель ssh

Вы не можете использовать CNAME в качестве корня для Вашего домена. Заключить статью Википедии в кавычки о RFC 1034:

Псевдоним, определенный в записи CNAME, не должен иметь никаких других ресурсных записей других типов (MX, A, и т.д.)

Причина этого состоит в том, потому что CNAME говорит клиентам, что (в сущности) необходимо здесь искать ответ, но это запрашивает весь домен. Так не только Ваш, официальный набор документов к этому, но и любая другая запись будет проигнорирован. На самом деле большинство серверов DNS не позволяет Вам добавить любые другие записи на хост Cnamed. Раздел RFC 1912 выезда 2.4 для примера того, почему это не будет работать.

Ваше единственное решение состоит в том, чтобы удалить CNAME и использовать запись.

15
задан 13 April 2017 в 15:14
2 ответа

The "channel 2" and "channel 3" lines are from ssh. The sshd instance on the remote server is trying to connect to host.com port 27017 in order to service a tunnel connection, and it's getting a "connection timed out" error.

In other words, sshd on the remote server can't reach the target of the tunnel. Since the remote host is also the host which you're supposedly tunneling to, it's hard to say what the specific problem is. It could be that "host.com" resolves to more than one IP address. You're making an SSH connection to one server in the cluster, and then a different server in the cluster is being chosen as the tunnel target. You could try changing the tunnel target to "localhost" instead of "host.com":

ssh -fN -l root -i path/to/id_rsa -L 9999:localhost:27017 host.com

Update:

"-L 9999:localhost:27017" means that the ssh client on the local server listens for connections on port 9999. When it gets a connection, it tunnels the connection to the sshd instance on the remote server. The remote sshd instance connects from there to localhost:27017. So "localhost" here is from the perspective of the remote server.

With the netstat output, it's a little clearer why it wasn't working before. The "127.0.0.1:27017 " part means that Mongodb is specifically bound to the localhost (127.0.0.1) interface on the remote host. You can't contact that instance of mongodb directly by trying to connect to the host's regular IP address--you can only contact that instance of mongodb through the localhost address. And of course, since it's localhost, you can only contact if from a client running on the same host.

So, the way you're doing it now--tunnel a connection to the server through ssh and then connect to localhost from there--is the way to do it.

21
ответ дан 2 December 2019 в 20:50

Я выполнил несколько конфигураций на своем Ubuntu 18 Vagrant box, чтобы успешно подключать MongoDB удаленно с помощью графического интерфейса пользователя Robo 3T. Я объяснил следующие шаги.

  1. На сервере Ubuntu, чтобы открыть оболочку mongo, запустите:
     $ mongo
     
  2. Внутри оболочки mongo введите следующую команду для создания нового пользователя с правами администратора.

    > используйте admin;
     > db.createUser ({пользователь: "admin", pwd: "пароль", роли: [{role: "root", db: "admin"}]});
     
  3. По умолчанию mongodb настроен на разрешение подключений только с локального хоста (IP 127.0.0.1). Нам нужно разрешить удаленные подключения с любого IP-адреса. Следующее изменение следует делать только на вашем сервере разработки. Откройте файл etc / mongod.conf и внесите следующие изменения.

     # сетевые интерфейсы
      сеть:
      порт: 27017
      bindIp: 0.0.0.0 # значение по умолчанию 127.0.0.1
     

    Также в том же mongod.conf раскомментируйте параметр безопасности и добавьте параметр авторизации , как показано ниже.

     безопасность:
      авторизация: включена
     
  4. Сохраните и выйдите из файла mongod.conf и перезапустите сервер mongodb.

     $ sudo servcie mongod restart
     
  5. Загрузите и установите инструмент Robo 3T GUI.

  6. В графическом интерфейсе пользователя Robo 3T в настройках подключения необходимо внести несколько изменений, как показано на ниже снимки экрана.

enter image description here

Введите имя пользователя и пароль базы данных mongodb admin , которые вы создали ранее.

enter image description here

Здесь я ввел свои учетные данные ssh в Ubuntu 18 Vagrant box.

enter image description here

Сохраните изменения и нажмите значок подключения , чтобы проверить, работает ли соединение.

0
ответ дан 2 December 2019 в 20:50

Теги

Похожие вопросы