我目前使用 Paramiko 访问 SFTP 服务器并连接到同一服务器上的 PostgreSQL。我发现很多使用
sshtunnel
登录 PostgreSQL 的例子。但我不知道如何用纯Paramiko做到这一点。
目前我的代码看起来像这样:
# establish SSH tunnel
self.ssh = paramiko.SSHClient()
self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.ssh.connect(hostname=host, username=user, password=password)
# setup SFTP server
self.sftp = self.ssh.open_sftp()
# connect to datebase
self.engine = create_engine('postgres+psycopg2://{}:{}@{}:{}/{}'.format(user, password, host, port, db))
感谢您的建议!
sshtunnel
只是 Paramiko 的包装。所以一般来说,你可以使用它来简化代码,除非你有一些限制阻止你安装额外的包。
例如:在Python中通过SSH隧道连接到PostgreSQL数据库
如果你无法安装它,你基本上至少可以重用它的代码。
强制性警告:请勿使用
AutoAddPolicy
- 这样做您将失去针对 MITM 攻击的保护。正确的解决方案请参阅Paramiko“未知服务器”。