所以我使用EC2使用AWS,我正在尝试为Postgresql打开一个端口。在AWS中我已经打开它了:
TCP
Port (Service) Source Action
0 - 65535 sg-92aadda2 (default) Delete
22 (SSH) 0.0.0.0/0 Delete
80 (HTTP) 0.0.0.0/0 Delete
5432 0.0.0.0/0 Delete
当我执行netstat时,它看起来好像是在监听端口:
# netstat -an | grep 5432
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
当我执行localhost nmap时,我得到以下内容:
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000010s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
5432/tcp open postgresql
这就是乐趣开始的地方。当我从备用主机执行nmap时,我得到以下内容:
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
5432/tcp closed postgresql
我也查看了我的iptables,看看我是否遗漏了什么,但iptables看起来是空的(这应该意味着他们并没有真正做多少)
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere 127.0.0.0/8 reject-with icmp-port-unreachable
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:postgresql
ACCEPT icmp -- anywhere anywhere
LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
我错过了什么因为我似乎无法弄清楚如何访问ip。每当我尝试时,我都会收到以下错误:
Is the server running on host "xx.xx.xx.xx" and accepting TCP/IP connections on port 5432?
如何制作它以便我可以打开端口以便外部服务器可以访问它?在此先感谢=)Lemme知道您是否需要任何其他数据。
编辑:如下所述,我测试了telnet,我能够远程登录本地主机,但是当我从外面尝试时,我得到:
$ telnet xx.xx.xx.xx 5432
Trying xx.xx.xx.xx...
telnet: Unable to connect to remote host: Connection refused
另外,我仔细检查过,我能够正确地telnet到ssh:
$ telnet xx.xx.xx.xx 22
Trying xx.xx.xx.xx...
Connected to xx.xx.xx.xx.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1
答案 0 :(得分:37)
修改/etc/postgresql/<version>/main/postgresql.conf
并将listen_addresses
设置为您的外发接口或全部。重启postgresql:sudo service postgresql restart
。
答案 1 :(得分:29)
它适用于我最后一种方法(Julio):
编辑: postgresql.conf
sudo nano /etc/postgresql/9.3/main/postgresql.conf
启用或添加:
listen_addresses = '*'
重新启动数据库引擎:
sudo service postgresql restart
此外,您可以查看文件: pg_hba.conf
sudo nano /etc/postgresql/9.3/main/pg_hba.conf
并添加您的网络或主机地址:
host all all 192.168.1.0/24 md5
答案 2 :(得分:2)
如果您编辑了postgresql.conf和main / pg_hba.conf仍然有问题,请尝试 sudo ufw允许5432 / tcp取消阻止psql端口
答案 3 :(得分:0)
如果您使用 docker 连接到主机的 postgresql,您必须使用主机的 ip,您可以通过运行 ip addr show docker0
获得该 ip,希望它对某人有所帮助。