使用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?

我不知道是什么问题。

+0

确保Postgres的服务器重新启动(例如'listen_address'变化需要这样的重启)。我想这可能是一些防火墙问题。 –

+0

尝试使用ssh访问端口5432,在pgadmin3中尝试使用数字ip-adres(而不是主机名)(可能是陈旧的DNS条目)是否存在任何NAT /防火墙? – wildplasser

+1

防火墙似乎最有可能。 –

@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