Я пытаюсь получить доступ к Server_A, на котором работает PostgreSQL. Этот сервер находится в локальной сети, поэтому мне нужно перенаправить порт с Server_B, который доступен и находится в той же сети.

Чтобы получить доступ к postgreSQl на Server_B , я могу легко перенаправить порты следующим образом:

ssh -L 54320:Server_A:5432 [email protected]_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 [email protected]_B

А также :

psql -h Server_A -p 5432 -d db_name -U user

Но здесь имя хоста не может быть разрешено ...

Есть какое-нибудь решение?

answer

Эта команда:

ssh -L 54320:Server_A:5432 [email protected]_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.