Как подключиться к облачной базе данных, которая не имеет публичного адреса?

Покажу на примере Amazon AWS и подключения к DocumentDB (она же MongoDB).

Дано:

  • dbHost - hostname или ip адрес базы данных
  • dbPort - порт базы данных
  • virtualMachineHost - адрес виртуальной машины, которая находится в той же сети что dbHost или имеет доступ к dbHost

Для подключения так же нужно иметь ssh_key_file, который будет использован для подключения к virtualMachineHost. Если у вас есть этот файл, то можете пропустить следующий пункт.

Создание ssh ключа

Если у вас нет этого файла, то зайдите в раздел Services -> EC2 -> Instances, выберите тот инстанс, через который вы будете подключаться, найдите раздел Instance details. Откройте раздел "Key pair assigned at launch" и кликните по ссылке.

<i>Instance details</i>
Instance details

Откроется раздел "Key pairs". Здесь нужно создать новую пару ключей.

<i>Раздел Key pairs</i>
Раздел Key pairs

Сохраните полученный файл в любую папку (например "~/Documents/projects/ec2-key.pem")

Подключение

Выполните команду:

ssh -i <ssh_key_file> -L <dbPort>:<dbHost>:<dbPort> <username>@<virtualMachineHost> -N

где <ssh_key_file> - путь к файлу , который мы сгенерировали выше, <username> - имя пользователя, для которого был сгенерирован <ssh_key_file> (например centos).

Ключ -N нужен для того чтобы все локальные подключения к порту <dbPort> перенаправлялись через ssh туннель.

Может появиться уведомление: "Are you sure you want to continue connecting (yes/no/[fingerprint])?" Введите yes и нажмите enter.

Если всё прошло успешно, то консоль больше не будет выводить ничего и не будет принимать никаких команд, значит мы успешно настроили подключение.

Далее можно подключаться к базе данных как будто она расположена на localhost. Например через консоль или через любой UI интерфейс.

<i>Пример подключения</i>
Пример подключения
Как подключиться к облачной базе данных, которая не имеет публичного адреса?
Начать дискуссию