Postgresql
為什麼 PGSQL 圖形客戶端可以通過 SSH 隧道而不是我連接?
我有一個 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 期望連接的地方。