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

通过SSH(paramiko+mysql.connector)连接远程MySQL失败求助

解决SSH连接成功但无法通过隧道连接远程MySQL的问题

报错信息

mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on 'xxx.hoct.com:3306' (10060)

问题说明

已成功通过SSH连接目标服务器,但无法连接远程MySQL;由于需要禁用['rsa-sha2-512', 'rsa-sha2-256']公钥算法才能建立SSH连接,选择使用paramiko库而非sshtunnel,现需修正代码以实现通过SSH隧道连接MySQL。

修正后的代码

import mysql.connector  # pip install mysql-connector-python
from paramiko import RSAKey, SSHClient, AutoAddPolicy

ssh_passprase = 'passprase'
ssh_key_path = 'C:\\Users\\dell\\.ssh\\deploy_pk2'
private_key = RSAKey.from_private_key_file(ssh_key_path, password=ssh_passprase)
ssh_host = 'xxx.hoct.com'
ssh_username = 'user'
ssh_port = 22

# 远程MySQL在SSH服务器上的地址和端口
remote_sql_host = 'localhost'
remote_sql_port = 3306
# 本地用于转发的端口(选一个未被占用的端口,比如3307)
local_forward_port = 3307

sql_username = 'user'
sql_password = 'password'
sql_main_database = 'db'

# 初始化SSH客户端
ssh_client = SSHClient()
ssh_client.load_system_host_keys()
ssh_client.set_missing_host_key_policy(AutoAddPolicy())

# 连接SSH服务器,禁用指定公钥算法
ssh_client.connect(
    hostname=ssh_host,
    port=ssh_port,
    username=ssh_username,
    pkey=private_key,
    disabled_algorithms={'pubkeys': ['rsa-sha2-512', 'rsa-sha2-256']}
)

# 建立本地端口转发:将本地3307端口的请求转发到远程服务器的localhost:3306
transport = ssh_client.get_transport()
transport.request_port_forward('', local_forward_port, remote_sql_host, remote_sql_port)

# 连接MySQL,目标为本地转发端口
print(mysql.connector.__version__)
cnx = mysql.connector.connect(
    user=sql_username,
    password=sql_password,
    host='localhost',
    port=local_forward_port,
    database=sql_main_database
)

# 执行查询
cursor = cnx.cursor()
query = "SELECT * FROM price_source"
cursor.execute(query)
for row in cursor:
    print(row)

# 关闭资源
cursor.close()
cnx.close()
ssh_client.close()

核心修改说明

  • 改用SSHClient封装类,简化SSH连接和端口转发的实现,同时支持直接传入disabled_algorithms参数
  • 创建本地端口转发规则:将本地未被占用的端口(如3307)映射到远程服务器上的MySQL地址(localhost:3306)
  • MySQL连接目标改为本地转发端口,而非直接连接远程主机,确保流量通过SSH隧道传输
  • 完善资源关闭流程,避免连接泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:33:10