端口从外部 postgresql 转发到本地主机

端口从外部 postgresql 转发到本地主机

我有几个数据库托管在应用程序服务器外部,例如:数据库实例:

192.168.178.21:5432
192.168.178.22:5432
192.168.178.23:5432

应用程序服务器:192.168.178.11

现在我想将外部数据库转发到端口 5431-5433 并能够使用 psql 连接到本地主机:

psql -h 127.0.0.1 -p 5432 -U <user> -d <db>

我得到:

psql: could not connect to server: Connection refused
        Is the server running on host "127.0.0.1" and accepting
        TCP/IP connections on port 5432?

该服务器上的服务只允许连接到本地主机,此外这些端口将通过 ssh 转发。

我尝试了防火墙伪装:

firewall-cmd --zone=internal --add-masquerade --permanent
firewall-cmd --zone=internal --add-forward-port=port=5432:proto=tcp:toport=5432:toaddr=192.168.178.22 --permanent
firewall-cmd --reload

有任何想法吗? (我已经收藏了几本手册,包括 CentOS、Fedora 和 Redhat 介绍)

编辑:只有 Postgres 端口在各自的服务器上打开,没有其他。我将尝试使用 postgresql 感知网关,例如脆脆的代理

答案1

这取决于postgresql如何pg_hba.conf配置以及 postgresql 服务器是否侦听您列出的 IP 地址。

否则,如果您可以 ssh 到这些服务器,您可以-L在 ssh(1) 示例中使用 ssh 端口转发选项:

ssh [email protected] -L 5431:localhost:5432 -f
ssh [email protected] -L 5432:localhost:5432 -f
ssh [email protected] -L 5433:localhost:5432 -f

您可以通过以下方式实现相同的效果~/.ssh/config

Host db1
        Hostname 192.168.178.21
        LocalForward            localhost:5431 localhost:5432

Host db2
        Hostname 192.168.178.22
        LocalForward            localhost:5432 localhost:5432

Host db3
        Hostname 192.168.178.23
        LocalForward            localhost:5433 localhost:5432

然后就

ssh -f db1
ssh -f db2
ssh -f db3

相关内容