使用pgAdmin访问远程Postgres服务器
问题描述:
我的XP机器上运行着pgAdmin。有一台Centos机器在网络上运行Postgres服务器。 Postgres的服务器pg_hba.conf
文件具有以下行使用pgAdmin访问远程Postgres服务器
TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 10.0.0.68/32 trust
local mydb myuser password
local all postgres ident
host mydb myuser 10.0.0.68/32 password
host all postgres 10.0.0.68/32 trust
我postgresql.conf
文件中有如下一行:
listen_address = 'localhost, 10.0.20.10'
nmap -sS 10.0.20.10
显示:
PORT STATE SERVICE
5432/tcp open postgresql
我可以ssh到的是bash shell服务器,但我无法连接到pgAdmin。我得到如下:
无法连接到服务器:没有到主机的路由(0x00002751/10065)是 服务器在主机“10.0.20.10”运行并接受TCP/IP连接 在端口5432?
我不知道是什么问题。
答
@Aidan找到了自己的解决方案:
这是一个防火墙问题。
service iptables stop
启用连接。我只写一条规则来允许连接。
+4
您可以轻松添加一个iptable规则来转发到正确的端口,而不是关闭防火墙。 –
答
假设服务器的IP地址为10.0.20.10
,那么你可以只添加这些iptable的规则@Dark STAR1在评论中提出:
iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 10.0.20.10 --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s 10.0.20.10 --sport 5432 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
确保Postgres的服务器重新启动(例如'listen_address'变化需要这样的重启)。我想这可能是一些防火墙问题。 –
尝试使用ssh访问端口5432,在pgadmin3中尝试使用数字ip-adres(而不是主机名)(可能是陈旧的DNS条目)是否存在任何NAT /防火墙? – wildplasser
防火墙似乎最有可能。 –