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

Как подключиться к удаленному серверу Postgresql через сокет домена Unix через SSH

У меня есть две машины: моя рабочая станция работает на Arch Linux, а мой облачный сервер - на Ubuntu.

Я установил Postgresql на свой сервер, и он доступен через Unix Domain Socket на самом сервере, теперь я хочу подключиться к серверу postgresql со своей рабочей станции через ssh-туннель. Я использовал туннелирование сокетов openssh, чтобы попытаться подключиться:

ssh -L/tmp/postgresql:/var/run/postgresql production@<ip>

И для подключения к серверу я использовал следующую команду на psql

psql -h /tmp/postgresql

Но я получаю следующую ошибку.

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

Что-то я делаю не так?

Спасибо

psql -h берет имя каталога, в котором он создает сокет домена unix с именем на основе некоторой жестко закодированной схемы, т.е. .s.PGSQL.5432 по умолчанию на основе порта по умолчанию 5432 при обмене данными через TCP. ssh -L вместо этого ожидает как для локальной, так и для удаленной стороны не каталог, а точное имя файла сокета, т.е. не только /tmp/postgresql но /tmp/postgreql/.s.PGSQL.5432.