为什么 PGSQL 图形客户端可以通过 SSH 隧道连接而我却不行?

为什么 PGSQL 图形客户端可以通过 SSH 隧道连接而我却不行?

我有一个 PostgreSQL 服务器,它只允许本地连接。

我正在使用“Navicat for PostgreSQL Lite”进行一些管理操作。在此客户端中,我配置了到服务器的 SSH 隧道。一切正常。

今天,我想使用另一个客户端,但它不允许我配置内部的 SSH 隧道。因此,我尝试手动打开 SSH 隧道:

ssh -L 15021:myserver.com:5432 [email protected]

但是当我尝试将其与客户端一起使用时,它说连接被拒绝。在 SSH 提示中,我收到了此消息。

channel 3: open failed: connect failed: Connection refused

我试过

psql -h localhost -p 15021 db_name

同样的错误 ...

我不明白 Navicat 有什么神奇的功能,而我手动使用 SSH 隧道却做不到。我非常确定 PostgreSQL 监听端口 5432。

谢谢您的任何指点或解答。

编辑:

这是一次尝试记录LogLevel DEBUG。我匿名化了主机名。

Sep 13 14:57:23 myserver sshd[27793]: debug1: server_input_channel_open: ctype direct-tcpip rchan 3 win 2097152 max 32768
Sep 13 14:57:23 myserver sshd[27793]: debug1: server_request_direct_tcpip: originator ::1 port 64027, target myserver.com port 5432
Sep 13 14:57:23 myserver sshd[27793]: debug1: connect_next: host myserver.com ([xxx.xx.xx.xxx]:5432) in progress, fd=9
Sep 13 14:57:23 myserver sshd[27793]: debug1: channel 1: new [direct-tcpip]
Sep 13 14:57:23 myserver sshd[27793]: debug1: server_input_channel_open: confirm direct-tcpip
Sep 13 14:57:23 myserver sshd[27793]: debug1: channel 1: connection failed: Connection refused
Sep 13 14:57:23 myserver sshd[27793]: error: connect_to myserver.com port 5432: failed.
Sep 13 14:57:23 myserver sshd[27793]: debug1: channel 1: free: direct-tcpip, nchannels 2

答案1

ssh -L 15021:myserver.com:5432[电子邮件保护]

这不是建立隧道的典型方式,因为它要求远程 SSH 服务器通过其公共 IP 地址连接到 PostgreSQL ( myserver.com)

这是Connection refused因为 postgres 不监听其公共地址。这是通常的默认情况。

你可能想做的是:

 ssh -L 15021:localhost:5432 [email protected]

在这种情况下,SSH 将路由数据库连接来自你的 localhost:15021localhost:5432 远程主机,这大概就是数据库需要连接的地方。

相关内容