Я пытаюсь получить доступ к Server_A на котором работает PostgreSQL. Этот сервер находится в локальной сети, поэтому мне нужно перенаправить порт из Server_B который доступен и находится в той же сети.
Чтобы получить доступ к postgreSQl на Server_B, Я могу легко перенаправить порты следующим образом:
ssh -L 54320:Server_A:5432 user@Server_B
И в другом терминале:
psql -p 54320 -d db_name -U user
Моя проблема в том, что я хочу воспроизвести соединение, выполненное с машины, присутствующей в сети Server_B. Этот компьютер может подключиться к базе данных с помощью этой команды:
psql -h Server_A -p 5432 -d db_name -U user
У меня собственно к проблемам:
Вставив 5432:Server_A:5432
в команде ssh для перенаправления порта 5432 у меня есть эта ошибка:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Вместо того, чтобы напрямую пересылать порт из server_A, Пытаюсь пробросить порт из Server_B иметь -h
аргумент в psql
команда.
ssh -L 5432:127.0.0.1:5432 user@Server_B
И :
psql -h Server_A -p 5432 -d db_name -U user
Но здесь имя хоста не может быть разрешено ...
Есть какое-нибудь решение?
Эта команда:
ssh -L 54320:Server_A:5432 user@Server_B
выглядит хорошо, но при этом:
psql -p 54320 -d db_name -U user
туннель ssh не используется, потому что по умолчанию в Unix psql
подключается к Доменный сокет Unix, как это предлагается в сообщении об ошибке, которое вы упомянули ("... прием соединений через сокет домена Unix ...")
Вам просто не хватает -h localhost
вариант. Пытаться:
psql -p 54320 -d db_name -U user -h localhost
Предварительно установив туннель ssh между localhost:54320
и Server_A:5432
через Server_B
, это будет достигнуто в postgres на Server_A:5432
.