python - 在 Windows 上使用 Python 通过 ssh 连接到数据库时出错

标签 python database ssh psql ssh-tunnel

我有一段代码,允许我通过 Python 中的 ssh 连接到我的 psql 数据库。它在 Ubuntu 18.10(通过 VirtualBox)上完美运行,但每次在 Windows 上都会失败,并出现无法到达远程主机和端口的错误。

我正在开发一个用户界面,可以从远程数据库(日志等)查询数据并将其可视化。

所有开发都是在 Ubuntu 18.10 上使用 Spyder3 完成的。在我尝试在 Windows 10 上执行相同的代码之前,我从未遇到过问题。

我尝试 Telnet 到 localhost:port 和远程主机:port(通过 ssh)并且它有效。在 stackoverflow 和其他地方查找了所有可能的答案后,我仍然无法解决该问题。事实上,它在一个环境上工作,而在同一台机器上的另一个环境上不起作用,这告诉我这是某种环境设置,但我不知道它可能是什么。

代码:

import psycopg2
import logging
logging.basicConfig(level=logging.DEBUG)

from sshtunnel import SSHTunnelForwarder

PORT = 5432
REMOTE_HOST = '111.222.111.222'
REMOTE_SSH_PORT = 22
curs = None
conn = None


server = SSHTunnelForwarder((REMOTE_HOST, REMOTE_SSH_PORT),
     ssh_username='username',
     ssh_password='password',
     remote_bind_address=('localhost', PORT),
     local_bind_address=('localhost', PORT))

server.start()
conn = psycopg2.connect(database='db_name', user='db_username', password='db_password', host='127.0.0.1', port='5432')
curs = conn.cursor()

预计: 成功连接ssh,随后成功登录数据库。这可以通过同一台计算机上的 VirtualBox 在 Ubuntu 18.10 上运行。

实际结果: 2019-01-02 10:54:51,489 错误设置 SSH 转发器时出现问题:无法打开隧道 localhost:5432 <> localhost:5432 可能正在使用或目标无法访问

最佳答案

我意识到我的本地 postgres (psql) 服务正在干扰端口映射,因为它也使用端口 5432。一旦我禁用该服务,它就会像魅力一样工作。

关于python - 在 Windows 上使用 Python 通过 ssh 连接到数据库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54004429/

相关文章:

python - Scraper 收集了很少的标题并忽略了其余的

Python:构建 Pandas 数据帧对象

sql - 在不改变数据类型string的情况下计算hive中string类型两列的时间差

database - 数据库中接口(interface)元数据的优势

networking - 从快照创建的 Google Cloud 虚拟机实例不允许 ssh

ssh - 使用 “vim”可以导致ssh超时,但是 “top”不能

python - pandas 删除一个单元格并将该列向上移动

python - 导入错误 : No module named kivy

java - 编程决定 java 或 .Net,db 或无 db

amazon-web-services - AWS CentOS 根 key 对