Thi*_*and 3 postgresql networking ssh port-forwarding forwarding
我尝试访问运行 PostgreSQL的Server_A。该服务器位于本地网络上,这就是为什么我必须从可访问且位于同一网络中的Server_B转发端口。
要访问Server_B上的 postgreSQl ,我可以轻松地转发这样的端口:
ssh -L 54320:Server_A:5432 user@Server_B
Run Code Online (Sandbox Code Playgroud)
而在另一个终端:
psql -p 54320 -d db_name -U user
Run Code Online (Sandbox Code Playgroud)
我的问题是我想重现从Server_B网络中存在的机器完成的连接。这台机器可以使用以下命令将自己连接到数据库:
psql -h Server_A -p 5432 -d db_name -U user
Run Code Online (Sandbox Code Playgroud)
我实际上有问题:
通过插入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"?
Run Code Online (Sandbox Code Playgroud)
而是直接向前从港口的SERVER_A,我尝试着从港口SERVER_B有-h在参数psql命令。
ssh -L 5432:127.0.0.1:5432 user@Server_B
Run Code Online (Sandbox Code Playgroud)
和 :
psql -h Server_A -p 5432 -d db_name -U user
Run Code Online (Sandbox Code Playgroud)
但是在这里,主机名无法解析......
有什么解决办法吗?
这个命令:
ssh -L 54320:Server_A:5432 user@Server_B
Run Code Online (Sandbox Code Playgroud)
看起来不错,但是当这样做时:
psql -p 54320 -d db_name -U user
Run Code Online (Sandbox Code Playgroud)
不使用 ssh 隧道,因为默认情况下在 Unix 上,psql连接到Unix 域套接字,就像您提到的错误消息所建议的那样(“...接受 Unix 域套接字上的连接...”)
你只是缺少一个-h localhost选项。尝试:
psql -p 54320 -d db_name -U user -h localhost
Run Code Online (Sandbox Code Playgroud)
之前曾之间建立一个SSH隧道localhost:54320和Server_A:5432通过Server_B,这将在达到Postgres的Server_A:5432。