我尝试访问运行PostgreSQL的Server_A 。 该服务器位于本地networking上,这就是为什么我必须从Server_B转发端口, Server_B可以在同一networking中访问。
要访问Server_B上的postgreSQl,我可以轻松地转发像这样的端口:
ssh -L 54320:Server_A:5432 user@Server_B
而在另一个terminal:
psql -p 54320 -d db_name -U user
我的问题是我想重现从Server_B的networking中存在的机器完成的连接。 这台机器可以使用以下命令将自己连接到数据库:
psql -h Server_A -p 5432 -d db_name -U user
其实我有问题:
通过在ssh命令中插入5432:Server_A:5432来转发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转发端口以在psql命令中使用-h参数。
ssh -L 5432:127.0.0.1:5432 user@Server_B
和:
psql -h Server_A -p 5432 -d db_name -U user
但在这里,主机名不能解决…
有没有解决办法?
这个命令:
ssh -L 54320:Server_A:5432 user@Server_B
看起来不错,但是当这样做的时候:
psql -p 54320 -d db_name -U user
因为默认情况下在Unix上, psql连接到一个Unix域套接字 ,就像你提到的错误消息(“…接受在Unix域套接字上的连接…”)
你只是缺less一个-h localhost选项。 尝试:
psql -p 54320 -d db_name -U user -h localhost
之前已经通过Server_B在localhost:54320和Server_A:5432之间build立了ssh隧道,这将在Server_A:5432上达到postgres。