You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用sshtunnel通过ppk私钥文件连接远程MySQL数据库的方案咨询

sshtunnel 切换为SSH密钥连接调整方案

第一步:转换PPK私钥为OpenSSH格式

sshtunnel 底层依赖paramiko库,原生不支持PuTTY生成的PPK格式私钥,需要先转换格式:

  • 打开PuTTYgen,点击「Load」选择你持有的PPK私钥文件,输入私钥密码(如果有设置的话)完成加载
  • 点击顶部菜单栏「Conversions」→「Export OpenSSH key」,将导出的文件保存为无后缀的私钥文件(例如id_rsa)

第二步:调整Python连接代码

只需要修改SSHTunnelForwarder的认证参数即可,删除原有的ssh_password配置,替换为私钥路径配置,修改后的完整代码如下:

import sshtunnel
import mysql.connector
import numpy as np
import pandas as pd

host = ""
username=""
# 原password参数不再需要,删除即可
tunnel_username=""
tunnel_password=""
# 新增私钥路径配置,如果私钥有密码再加下面这行
# ssh_pkey_password = "你的私钥密码"

with sshtunnel.SSHTunnelForwarder(
    (host, 22),
    ssh_username=username,
    # 替换为你导出的OpenSSH格式私钥的本地路径
    ssh_pkey="/path/to/your/id_rsa",
    # 如果私钥有密码,加下面这行配置,没有就删除
    # ssh_private_key_password=ssh_pkey_password,
    remote_bind_address=('localhost', 3306),
    local_bind_address=('0.0.0.0', 3306)
) as tunnel:
    connection = mysql.connector.connect(
    user= tunnel_username,
    password= tunnel_password,
    host='localhost',
    database= database,
    port=3306)
    data = pd.read_sql_query(query, connection)
    connection.close()
    print(data)

注意事项

  • Windows系统下填写私钥路径时,建议使用原始字符串避免转义问题,例如r"C:\users\xxx\id_rsa"
  • Linux/macOS系统下需要将私钥文件权限设置为600,执行命令chmod 600 /path/to/your/id_rsa,否则会报权限错误
  • 私钥文件属于敏感信息,不要和代码一起提交到公开仓库,避免泄露

内容的提问来源于stack exchange,提问作者Garrett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:15:10