我有一个远程服务器,可以通过 SSH 访问,没有任何问题。我在远程服务器(称为“enc”)和本地计算机上设置了 PostgreSQL (ps),两者都在 5432(默认)上运行。远程服务器不允许来自外部的连接(本地 Web 服务器直接访问它)。
我正在尝试设置一个 SSH 隧道,以使在远程 ps 服务器上运行命令比复制文件、登录服务器并在该端手动运行它们更容易。
我尝试运行以下命令
ssh -N -L 5555:enc:5432 enc
Run Code Online (Sandbox Code Playgroud)
隧道似乎设置正确,但是当我尝试使用以下命令连接到远程计算机时
psql -p 5555
Run Code Online (Sandbox Code Playgroud)
它说它不工作
psql: could not connect to server: No such file or directory. Is the server running locally and accepting connections on Unix domain socket "/run/postgresql/.s.PGSQL.5555"?
Run Code Online (Sandbox Code Playgroud)
这可能是隧道设置或限制性用户权限的问题(我想如果是这种情况,错误会有所不同)?
事实证明,他的问题出在更进一步的地方。隧道工作正常,但是尝试连接到 postgres 时,您必须传递 -h (即使它是针对 localhost),否则它将尝试通过 unix 套接字(错误中就在那里)而不是通过 tcp 连接(这这是它与隧道一起使用的唯一方法)。
| 归档时间: |
|
| 查看次数: |
19205 次 |
| 最近记录: |