使用端口转发到另一台机器访问远程PostgreSQL服务器

我尝试访问运行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端口:

通过在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"? 

我无法parsing主机名:

不是直接从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_Blocalhost:54320Server_A:5432之间build立了ssh隧道,这将在Server_A:5432上达到postgres。