SSH Tunnel链接远程数据库

SSH Tunnel链接远程数据库

因为数据库是在云上,所以想用ssh隧道的形式连接云上的数据库,想问一下如何使用模块化的设计把SSH Tunnel引到这个项目里,有没有什么好的建议。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
泽辉呀 2025-08-05 21:18:06

可以这样,使用@contextmanager创建一个上下文,用于创建和自动管理一个 SSH 隧道连接,然后在这个上下文中创建 Flask App 应用,期间就可以像正常连接 postgres 数据库一样,访问远程云上的数据库,但实际流量是通过 SSH 安全加密传输的,其他的操作均无需修改。


示例代码(演示用的,需要自行调整):


# tunnel.py
from contextlib import contextmanager
from sshtunnel import SSHTunnelForwarder

@contextmanager
def ssh_tunnel():
    server = SSHTunnelForwarder(
        ssh_address_or_host=('your.ssh.host', 22),
        ssh_username='your_ssh_username',
        ssh_pkey='/path/to/private/key',
        remote_bind_address=('127.0.0.1', 5432),
        local_bind_address=('127.0.0.1', 6543)
    )
    server.start()
    try:
        yield server
    finally:
        server.stop()


接下来创建一个上下文,在上下文中运行 App 实例即可:


from tunnel import ssh_tunnel

if __name__ == '__main__':
    with ssh_tunnel():
        # 在这里创建 App,其余的操作和普通的操作没区别
        ...


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
AI Agent 全栈开发工程师
  • 参与学习       543    人
  • 解答问题       417    个

全流程打造你自己的(Coze/Dify)低代码智能体开发平台;2025年入行正当时,企业急需,人才稀缺,竞争小;无论入行还是转行,首选口碑好课,门槛低、成长高

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师