如何通过 SSH 上的 Unix Doman Socket 连接到远程 Potgresql 服务器

如何通过 SSH 上的 Unix Doman Socket 连接到远程 Potgresql 服务器

我有两台机器,我的工作站运行在 Arch Linux 上,我的云服务器运行在 Ubuntu 上。

我已经在服务器上安装了 Postgresql,并且可以通过服务器本身上的 Unix Domain Socket 访问它,现在我想通过 ssh 隧道从我的工作站连接到 postgresql 服务器。我使用 openssh 套接字隧道尝试连接:

ssh -L/tmp/postgresql:/var/run/postgresql production@<ip>

为了连接到服务器,我使用了以下命令psql

psql -h /tmp/postgresql

但我收到了以下错误。

psql: error: could not connect to server: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/postgreql/.s.PGSQL.5432"?

我做错什么了吗?

谢谢

答案1

psql -h采用目录名,在其中创建 unix 域套接字,其名称基于某些硬编码方案,即,.s.PGSQL.5432默认情况下基于通过 TCP 进行通信时的默认端口 5432。ssh -L而是期望本地端和远程端都不是目录,而是套接字的确切文件名,即,/tmp/postgresql不仅仅是/tmp/postgreql/.s.PGSQL.5432

相关内容