使用 sshtunnel 和 SSH ppk 密钥文件查询 MySQL 数据库 Python

Query MySQL database with Python using sshtunnel, with SSH ppk key file

我已经能够使用密码通过以下代码通过 sshtunnel 进入远程数据库

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

host =""
username=""
password=""
tunnel_username=""
tunnel_password=""

with sshtunnel.SSHTunnelForwarder(
    (host, 22),
    ssh_username=username,
    ssh_password=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)

但是,情况发生了变化,我被迫只能通过 SSH 密钥(使用 PuTTYgen 生成)进行连接。话虽这么说,我有私钥(ppk 文件),但不清楚我需要做什么(或者如果可能的话)让下面的代码再次工作。

我没有看到引用 ppk 文件路径而不是 sshtunnel 密码的选项。

使用 SSHTunnelForwarder constructorssh_pkey 参数提供私钥文件的路径。

并且您需要将私钥文件转换为 OpenSSH 格式,因为 Paramiko(由 sshtunnel 使用)不支持 PuTTY 密钥格式。
参见 How to ssh connect through python Paramiko with ppk public key