Назад | Перейти на главную страницу

Доступ к удаленному серверу PostgreSQL с помощью переадресации портов на другой компьютер

Я пытаюсь получить доступ к 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 с помощью команды ssh:

Вставив 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.