【发布时间】:2019-03-07 13:11:35
【问题描述】:
我想使用here 所述的端口转发连接到在 OpenShift (3.9) 内运行的 PostgreSQL (9.6) 集群。为此,我在跳转主机(OpenShift 集群外部)上设置并检查端口转发,如下所示:
oc port-forward $pod 5432:5432
netstat -ln | grep 5432 # "tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN"
psql -U postgres -h localhost # OK
psql -U postgres -h $(hostname -i) # error: "connection refused"
所以看起来端口转发只监听localhost,而不是主机的其他IP地址。最终我想通过跳转主机从另一个远程主机连接到数据库,所以 'localhost' 是不够的。
如何设置 (OpenShift) 端口转发,使其也允许从远程主机访问转发的端口?我想 Iptables(结合 OpenShift 端口转发)可以解决问题,但我还不知道如何以及是否有更简单的方法。 (跳转主机运行Debian 9.5。)
更新 结合 SSH 隧道和 OpenShift (Kubernetes) 端口转发的方法显然可以解决这个问题。这是在下面接受的答案中提供的链接中建议的。
在跳转主机上(第一次会议):
ssh -N -L $(hostname -i):5432:localhost:5433 $(whoami)@$(hostname)
在跳转主机上(第二次会议):
oc port-forward $pod 5433:5432
在远程主机上:
psql -U postgres -h jump-host
【问题讨论】:
标签: postgresql openshift iptables portforwarding