我无法使用 ssh 命令转发 5432 端口:

我无法使用 ssh 命令转发 5432 端口:

我尝试访问服务器_APostgreSQL 正在运行。此服务器位于本地网络上,因此我必须从服务器_B可访问且位于同一网络中。

要访问 postgreSQl服务器_B,我可以轻松地像这样转发端口:

ssh -L 54320:Server_A:5432 user@Server_B

在另一个终端中:

psql -p 54320 -d db_name -U user

我的问题是我想重现网络中的一台机器完成的连接服务器_B. 这台机器可以使用以下命令连接到数据库:

psql -h Server_A -p 5432 -d db_name -U user

我实际上有两个问题:

我无法使用 ssh 命令转发 5432 端口:

通过插入5432:Server_A:5432ssh 命令来转发 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"?

我无法解析主机名:

而不是直接从服务器,我尝试从服务器_B-h在命令中包含参数psql

ssh -L 5432:127.0.0.1:5432 user@Server_B

和 :

psql -h Server_A -p 5432 -d db_name -U user

但这里,主机名无法解析......

有什么解决办法吗?

答案1

此命令:

ssh -L 54320:Server_A:5432 user@Server_B

看起来不错,但是这样做的时候:

psql -p 54320 -d db_name -U user

不使用 ssh 隧道,因为在 Unix 上默认psql连接到Unix 域套接字,就像您提到的错误消息所建议的那样(“...接受 Unix 域套接字上的连接...”)

您只是缺少一个-h localhost选项。请尝试:

   psql -p 54320 -d db_name -U user -h localhost

localhost:54320之前已经在和Server_A:5432之间建立了 ssh 隧道Server_B,这将到达 上的 postgres Server_A:5432

相关内容