![在 OSX 上,与 postgresql 的连接通过 SSH 隧道挂起](https://linux22.com/image/676062/%E5%9C%A8%20OSX%20%E4%B8%8A%EF%BC%8C%E4%B8%8E%20postgresql%20%E7%9A%84%E8%BF%9E%E6%8E%A5%E9%80%9A%E8%BF%87%20SSH%20%E9%9A%A7%E9%81%93%E6%8C%82%E8%B5%B7.png)
尝试连接到 OSX 上的远程 PG 服务器但一直超时。
首先,我设置了隧道:
ssh -L 5433:serverip:5432 user@serverip
然后,我在另一个终端尝试连接到 PG:
psql -h localhost -p 5433 -U user
此时连接仅停留约 3 分钟。然后我收到以下消息:
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
在 ssh 隧道终端上,我看到的只有这些:
channel 3: new [direct-tcpip]
(3 mins later:)channel 3: open failed: connect failed: Connection timed out
我尝试了所有我能想到的变体(localhost 与 127.0.0.1,不同的用户名)。什么都不起作用。这个确切的设置在 Windows Putty 上运行良好,所以不是服务器的问题。我还能够在服务器上 ssh 并运行 psql,所以不是 PG。
答案1
我相信您已postgresql
配置为仅监听 loopbavk ( localhost
)。您应该像这样使用转发:
ssh -L 5433:localhost:5432 user@serverip
否则,它将尝试连接到您服务器的公共 IP,但该 IP 上没有任何设备在监听,也没有任何设备被授权登录。
答案2
我遇到了一个非常类似的问题(这里是 Ubuntu):PostgreSQL 端口的 ssh 隧道,psql 使用该隧道访问远程数据库。当我在 psql 上请求自动完成(从 x 中选择 *)时,隧道会挂起/崩溃。
解决方案:将所有接口的 MTU 从 1500 更改为 576。解释:http://www.snailbook.com/faq/mtu-mismatch.auto.html
我生命中的几个小时就过去了。