SSH, туннелирование соединения с БД

30.11.2023

Лучшая настройка любой базы данных — это когда она не ждет внешних подключений. Но если подключиться все таки нужно, то можно создать SSH тунель к серверу и подключаться к БД локально.

Создать туннель на клиентской машине можно с помощью команды:

ssh -L 5555:localhost:5432 your_username@remote_host -N

Здесь:

  • -L 5555:localhost:5432 означает, что порт 5555 на вашем локальном компьютере будет перенаправлен на порт 5432 (стандартный порт PostgreSQL) на удаленном сервере;
  • your_username@remote_host: нужно заменить your_username на вашего пользователя на удаленном сервере и remote_host на адрес или имя хоста удаленного сервера;
  • -N говорит SSH не выполнять удаленные команды, а только перенаправлять порты.

Иногда нужно сделать так, чтобы туннель создавался автоматически при старте/перезапуске клиента. Одним из способов сделать это является создание задачи в crontab. С помощью команды crontab -e открываем редактор cron'а и добавляем:

@reboot /usr/bin/ssh -f -N -L 5555:localhost:5432 your_username@remote_host

Опция -f говорит SSH идти в фоновый режим до выполнения команд.

Теперь на клиентской машине БД сервера доступна по адресу localhost:5555.