Я хочу открыть SSH туннель, чтобы я мог подключиться к базе данных, как если бы я подключился к удаленному серверу.
Так что я могу сделать это без пароля (linux user
сопоставлен с postgresql user
):
ssh user@my_host.com
psql postgres
Мой pg_hba.conf
выглядит так:
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 md5
С туннелем я попытался использовать: ssh -L 3333:localhost:5432 user@my_host.com
Тогда: psql -U user -p 3333 -h localhost postgres
Он запрашивает пароль.
Затем я попытался имитировать подход «без хоста», как вы это делаете с терминала (без указания хоста).
psql --help
говорит -h
по умолчанию /var/run/postgresql
Итак, я попробовал: ssh -L 3333:/var/run/postgresql:5432 user@my_host.com
А потом: psql -U user -p 3333 postgres
Но тогда я получаю:
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.3333"?
В этом случае, я полагаю, я не подключаюсь через туннель, потому что он пытается использовать порт 3333
для postgresql? ..
P.S. Здесь есть похожий вопрос: PostgreSQL через SSH Tunnel
но для этого необходимо указать пароль.