我尝试访问服务器_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:5432
ssh 命令来转发 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
。