1

У меня есть удаленный сервер, который я могу SSH без проблем. У меня PostgreSQL (ps) настроен на удаленном сервере (называемом «enc») и на локальной машине, оба работают на 5432 (по умолчанию). Удаленный сервер не разрешает подключения извне (локальный веб-сервер подключается непосредственно к нему).

Я пытаюсь настроить SSH-туннель, чтобы упростить выполнение команд на удаленном сервере PS, а не копировать файлы, входить на сервер и запускать их вручную с этой стороны.

Я попытался выполнить следующую команду

ssh -N -L 5555:enc:5432 enc

Туннель, кажется, настроен правильно, но когда я пытаюсь подключиться к удаленной машине с

psql -p 5555

это говорит, что это не работает

psql: could not connect to server: No such file or directory. Is the server running locally and accepting connections on Unix domain socket "/run/postgresql/.s.PGSQL.5555"?

Вероятно, это проблема с настройками в туннеле или ограничением прав доступа пользователя (я полагаю, что ошибка была бы другой, если бы это было так)?

3 ответа3

1

Попробуй это:

ssh -N -L 5555:enc:5432 localhost

а потом

lsof -i :5555

Если вы ничего не видите там, ваша локальная машина ничего не слушает.

1

Оказывается, проблема была в том, что дальше. Туннель работает правильно, однако затем, пытаясь соединиться с postgres, вы должны передать -h (даже для localhost), иначе он попытается соединиться через сокет unix (который находится здесь в ошибке), а не через tcp (который это единственный способ, которым он будет работать с туннелем).

0

Тип

netstat -anp | grep LISTEN | grep "port_number"

на вашем сервере и найдите IP-адрес, по которому работает служба.

Если это ip-адрес компьютера, вы должны указать его в команде ssh -L, в противном случае, если это адрес обратной связи (127.0.0.1 - ipv4 или ::1 - ipv6), укажите это в команде.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .