ubuntu “10.9.8.5“,端口5433失败:连接超时(0x 0000274 C/10060)服务器是否在该主机上运行并接受TCP/IP连接?

rta7y2nd  于 2022-11-28  发布在  其他
关注(0)|答案(1)|浏览(461)

我尝试使用python通过隧道连接到我的数据库,但系统崩溃并显示警告:

"10.9.8.5", port 5433 failed: Connection timed out (0x0000274C/10060)
        Is the server running on that host and accepting TCP/IP connections?

我的python设置:
`

with SSHTunnelForwarder(
            ('10.132.230.2', 22),
            ssh_username="<usrnm>",
            ssh_password="<psswrd>", 
            remote_bind_address=('10.9.8.5', 5433)) as server:
         
            server.start()
            print ("server connected")
            params = {
                'database': "<dbnm>",
                'user':  "postgres",
                'password':  "<dbpsswrd>",
                'host': '10.9.8.5',
                'port': 5433
                }
            conn = psycopg2.connect(**params)
            curs = conn.cursor()

Everything below happened in 10.9.8.5 I tried to edit postgres configs:
1.我已经更改了postgresql.conf

1.我已经更改了pg_hba. conf(我添加了最后一行)

1.我重新启动postgres
但这并没有帮助
好的,在搜索了更多之后,我偶然发现了这样一个事实,那就是我允许端口5433

的防火墙可能有问题
然后我重新启动了服务器,但仍然收到此消息

lb3vh1jj

lb3vh1jj1#

您要告诉数据库客户端直接连接到10.9.8.5:5433,这不是隧道的工作方式。
SSHTunnelForwarder在您的 * 本地 * 机器上打开一个端口,然后通过中间ssh服务器将该端口转发给给定的remote_bind_address。它不允许您在原始IP地址下神奇地访问远程服务器。因此,在连接到数据库服务器时,您需要使用localhost127.0.0.1,并使用正确的端口号。
默认情况下,SSHTunnelForwarder选择本地主机上的一个随机可用端口;所选的端口号随后通过local_bind_port属性显示。但是,默认情况下,它也向其他主机打开此端口(0.0.0.0)。这不是必需的,因此最好是显式的,并且只绑定到localhost a.k.a. 127.0.0.1;您可以使用local_bind_address参数来完成此操作。
把所有这些放在一起:

with SSHTunnelForwarder(
            ('10.132.230.2', 22),
            ssh_username="<usrnm>",
            ssh_password="<psswrd>", 
            remote_bind_address=('10.9.8.5', 5433),
            local_bind_address=('127.0.0.1',)) as server: # Open port on localhost
         
            server.start()
            print ("server connected")
            params = {
                'database': "<dbnm>",
                'user':  "postgres",
                'password':  "<dbpsswrd>",
                'host': '127.0.0.1',            # Connect to localhost...
                'port': server.local_bind_port, # ... on the chosen port
                }
            conn = psycopg2.connect(**params)
            curs = conn.cursor()

相关问题