Как подключиться, например с помощью pgAdmin, к кластеру PostgreSQL, когда он где-то на сервере, где его порт доступен только локально, т.е. к нему закрыт доступ извне? При этом есть ssh на этот сервер, но по нему работать в консоли с psql и тестировать работающее с базой приложение очень не удобно.
Всё очень просто - нам поможет старый добрый ssh-туннелинг. Допустим есть сервер servername где на локальном порту 5432 крутится PostgreSQL, и есть пользователь username, который может ходить по ssh на этот сервер. Надо сделать так чтобы обращаясь к локальному порту 5432 на вашей рабочей машине вы фактически попадали на локальный порт 5432 нашего сервера.
Если вы на Windows, то смотрите в сторону утилиты PuTTY, я в своё время на ней такое делал. Если вы на Linux, как и я сейчас, то вам нужна такая комманда:
ssh -L 5432:localhost:5432 username@servername
У меня, кстати, несколько серверов пробрасываются на разные локальные порты на рабочей машине:
ssh -L 5432:localhost:5432 gray@server1
ssh -L 6432:localhost:5432 gray@server2
ssh -L 7432:localhost:5432 gray@server3
Очень удобно.
p.s. Ещё одна полезная ссылка, где рассказывается как пользоваться ssh по сертификату, т.е. без надобности вводить каждый раз пароль.
3 comments:
Я бы порекомендовал использовать следующую команду:
ssh -f -N -L 5432:localhost:5432 gray@server1
Команда автоматически уходит в background соответственно не требуется держать открытым терминал.
Да, спасибо за дополнение. Я предпочитаю держать терминал открытым, т.к. в основном работаю удалённо (не по локальной сети) и связь не всегда стабильна, т.ч. ssh часто подвисает. Такие ситуации удобно отслеживать с открытым терминалом.
Post a Comment