我有两台机器,我的工作站运行在 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
。