我正在嘗試透過 pgAdmin3 GUI 連接到連接埠 5432 上的遠端伺服器 myHost 上的 Postgresql 資料庫。
伺服器端 :
- 我有一個與 postgresql 角色匹配的 Unix myUser。
- pg_hba.conf 是:
本地所有所有信任
主機所有所有127.0.0.1/32信任
客戶端 :
- 我打開一個 ssh 隧道: ssh -L 3333:myHost:5432 myUser@myHost
- 我透過 pgAdmin3 (或透過 psql -h localhost -p 3333 )連接到伺服器。
我收到以下錯誤訊息:
伺服器意外關閉連線 這可能表示伺服器在處理請求之前或處理請求時異常終止。
我嘗試使用 psql -h localhost -p 3333 --dbname=myDB --user=mySuperUser 以超級使用者角色存取特定資料庫,但沒有成功。
我在設定中忘了什麼?
謝謝
答案1
檢查遠端主機是否允許隧道。您可以透過以下方式與用戶端確認隧道是否被拒絕:
ssh -v -L 3333:myHost:5432 myUser@myHost
答案2
就我而言,問題在於隧道以 IPv6 位址結束:
ssh -L 5434:localhost:5432 user@server
將 localhost 替換為我假設之前使用過的位址就足夠了:
ssh -L 5434:127.0.0.1:5432 user@server
我生命中的15分鐘就這樣付諸東流了。 :) 希望這可以節省其他人的時間...
答案3
如果有人仍在尋找解決方案:
嘗試在 /etc/ssh/sshd_config 中設定:
AllowTcpForwarding yes
GatewayPorts yes
然後:
service sshd restart
答案4
確保您實際上沒有連接到在與您為隧道本地端選擇的連接埠相同的連接埠上偵聽的 Postgres 本機實例。
如果本機連接埠正在使用,ssh
將列印錯誤訊息並跳過設定隧道。但它仍然會連接到遠端伺服器,這可能會導致錯誤滾出螢幕。由於您能夠連接,因此您不會懷疑隧道有任何問題,直到作為最後的手段,完全停止遠端 Postgres 並發現您可以仍然連接。
別問我怎麼知道這些。