Вопрос Взаимодействие с PostgreSQL на удаленном сервере через SSH-туннель?


У меня есть настройка User A на моем веб-сервере с ее открытым ключом SSH, скопированным в User B's ~/.ssh/authorized_keys на моем сервере базы данных. Идея заключается в использовании SSH-туннеля для облегчения связи между моим веб-приложением и удаленной базой данных. я использую ufw блокировать все, кроме соединений ssh ​​и порта 5432 который PostgreSQL использует для локальных подключений:

ufw default deny
ufw allow ssh/tcp
ufw allow 5432/tcp
ufw enable

Вот команда, которую я использую для открытия туннеля SSH (через веб-сервер):

ssh -L 63333:localhost:5432 userb@1.2.3.4

Бег netstat -lpnt | grep 63333 | grep ssh после того, как указанная выше команда на моем веб-сервере даст следующее:

tcp      0     0 127.0.0.1:63333       0.0.0.0:*       LISTEN      22560/ssh
tcp6     0     0 ::1:63333             :::*            LISTEN      22560/ssh

Затем я попытаюсь подключиться к серверу базы данных на порту 63333 чтобы убедиться, что все работает:

psql -h localhost -p 63333 userb

Я получил следующее сообщение об ошибке:

-bash: / usr / bin / psql: Нет такого файла или каталога

Есть ли что-то очевидное, что я здесь отсутствует? У меня только PostgreSQL установлен на сервере базы данных. Насколько я понимаю, как только туннель находится на месте и заданы правильные параметры, не должен ли я иметь доступ к интерактивному терминалу (psql)?


2
2017-12-18 19:13


происхождения




ответы:


Doh! Мой туннель SSH прекрасно соединялся. Необходимо установить на сервере клиента, который устанавливает удаленное соединение для связи с PostgreSQL.

В моем случае это был один лайнер на моем веб-сервере:

sudo apt-get install postgresql-client-9.3

2
2017-12-18 20:49