Postgresql

為什麼 PGSQL 圖形客戶端可以通過 SSH 隧道而不是我連接?

  • September 19, 2013

我有一個 PostgreSQL 伺服器,它只允許本地連接。

我正在使用“Navicat for PostgreSQL Lite”進行一些管理操作。在這個客戶端中,我為我的伺服器配置了一個 SSH 隧道。一切正常。

今天,我想使用另一個客戶端,它不允許我在裡面配置 SSH 隧道。所以,我嘗試手動打開一個 SSH 隧道:

ssh -L 15021:myserver.com:5432 me@myserver.com

但是當我嘗試將它與客戶端一起使用時,它說連接被拒絕。在 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

ssh -L 15021:myserver.com:5432 me@myserver.com

這不是建立隧道的典型方式,因為它要求遠端 SSH 伺服器通過其公共 IP 地址連接到 PostgreSQL ( myserver.com)

這導致Connection refused因為 postgres 不監聽其公共地址。這是通常和預設的情況。

您可能打算這樣做:

ssh -L 15021:localhost:5432 me@myserver.com

在這種情況下,SSH 會將 db 連接從 localhost:15021路由 到localhost:5432 遠端主機,這可能是 db 期望連接的地方。

引用自:https://serverfault.com/questions/538632