使用带有公钥和密码的 SSH 隧道通过 SQLAlchemy 连接到远程 PostgreSQL 数据库,所有这些都来自 Windows 机器

Posted

技术标签:

【中文标题】使用带有公钥和密码的 SSH 隧道通过 SQLAlchemy 连接到远程 PostgreSQL 数据库,所有这些都来自 Windows 机器【英文标题】:Connecting to remote PostgreSQL database with SQLAlchemy using SSH tunneling with public key and passphrase, all that from a Windows machine 【发布时间】:2014-10-01 00:03:30 【问题描述】:

所以,我正在使用 Windows 连接到远程 Postgres 数据库,并使用像 Navicat 这样的工具。我正在尝试使用 Python (2.7) 和 SQLAlchemy (0.9) 实现相同的目标,但没有成功。

所以,我的 Navicat 设置如下所示:

我尝试在 PuTTY 中设置隧道,连接到服务器,保持连接打开并尝试使用 IP 和端口,但完全没有成功。我不确定这是否足够,因为我有这个公钥和密码,所以我想知道是否可以使用 Python 和 SQLAlchemy(当然还有这个漂亮的 PuTTY 应用程序)以任何方式从 Windows 机器连接到这个数据库? 谢谢!

【问题讨论】:

【参考方案1】:

您可以将服务器和端口传递给您的 create_engine() 语句,ala:

create_engine('postgres://username:password@server:port/database')

http://docs.sqlalchemy.org/en/rel_0_9/dialects/postgresql.html

因此,假设您首先建立了到远程主机的 SSH 隧道,并将本地端口 1111 转发到远程服务器的端口 5432(这是默认的 postgres 端口),您的连接字符串将类似于:

create_engine('postgres://username:password@localhost:1111/database')

【讨论】:

谢谢!我一直在尝试连接到第一个 IP(来自“常规”选项卡)而不是 127.0.0.1...现在就像一个魅力:) 请注意,现在正确的命令是:create_engine('postgresql://username:password@localhost:1111/database')

以上是关于使用带有公钥和密码的 SSH 隧道通过 SQLAlchemy 连接到远程 PostgreSQL 数据库,所有这些都来自 Windows 机器的主要内容,如果未能解决你的问题,请参考以下文章

使用 SSH 隧道的 PostgreSQL/psycopg2 密码验证

DBeaver 通过 SSH 隧道连接

带有 aws SSM 的 SSH 隧道

ssh免密码登录机器(使用公钥和秘钥进行加密来实现)

ssh登陆强制使用密码验证登陆

ssh免密码登陆及其原理