Как подключиться к облачной базе данных, которая не имеет публичного адреса?
Покажу на примере 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" и кликните по ссылке.
Откроется раздел "Key pairs". Здесь нужно создать новую пару ключей.
Сохраните полученный файл в любую папку (например "~/Documents/projects/ec2-key.pem")
Подключение
Выполните команду:
где <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 интерфейс.