我刚开始使用postgres和ssh,并且在理解我需要做什么才能让远程客户端访问postgres服务器时遇到了一些麻烦。现在我有一台运行服务器的计算机,我可以使用psycopg2访问,但现在我想使用另一台计算机查询服务器。我环顾四周,发现使用sshtunneler的例子,但我觉得我错过了一些拼图。
import psycopg2
from sshtunnel import SSHTunnelForwarder
import time
with SSHTunnelForwarder(
('192.168.1.121', 22),
ssh_password="????",
ssh_username="????",
remote_bind_address=('127.0.0.1', 5432)) as server:
conn = psycopg2.connect(database="networkdb",port=server.local_bind_port)
curs = conn.cursor()
sql = "select * from Cars"
curs.execute(sql)
rows = curs.fetchall()
print(rows)
我的第一个困惑是我不确定应该使用什么用户名/密码。我下载了putty并使用这个tutorial将远程地址信息放在隧道部分中,但我不知道是否正在做任何事情。当我尝试启动服务器时出现错误
2017-03-03 10:03:28,742| ERROR | Could not connect to gateway 192.168.1.121:22 : 10060
对我需要做的任何形式的帮助/解释都将不胜感激。
如果我能在没有ssh的情况下做到那么那会更好。目前正在运行:
psycopg2.connect(dbname='networkinfodb', user='postgres', host='168.192.1.121', password='postgres', port=5432)
...输出
OperationalError Traceback(最近一次调用最后一次) in() ----> 1 psycopg2.connect(dbname ='networkinfodb',user ='postgres',host ='168.192.1.121',password ='postgres',port = 5432)
OperationalError: could not connect to server: Connection timed out (0x0000274C/10060)
Is the server running on host "168.192.1.121" and accepting
TCP/IP connections on port 5432?
我不知道该去哪里弄清问题是什么。
答案 0 :(得分:0)
所以我没有使用ssh隧道。这只是一个备份,因为我无法使用psycopg2连接到数据库。我发现防火墙阻止端口被外部访问,所以我能够改变它,现在我可以从客户端访问数据库了。