У меня есть две машины: моя рабочая станция работает на 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
.