我想打开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 via SSH Tunnel 但需要指定密码。