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

SSHTunnelForwarder与DBeaver使用SSH公钥认证失败问题咨询

解决方案

根因说明

该问题是由你使用的paramiko版本、DBeaver内置的SSH客户端库不支持macOS默认生成的RSA密钥采用的rsa-sha2-256/rsa-sha2-512签名算法导致的,系统终端SSH客户端兼容新旧算法所以可以正常登录,和密钥是否为PEM格式无关。

1. Python SSHTunnelForwarder 修复方案

方案一:升级paramiko到最新版本

2.9及以上版本的paramiko已经默认支持rsa-sha2系列算法,直接执行升级命令即可:

pip install --upgrade paramiko

升级完成后原有代码仅需补全缺失的本地端口配置即可正常运行。

方案二:手动指定兼容的签名算法(适配旧版本paramiko)

如果不方便升级依赖,可以在创建SSHTunnelForwarder时显式指定允许的公钥算法:

import paramiko
from sshtunnel import SSHTunnelForwarder
from mysql.connector import connect

# 手动添加rsa-sha2系列算法到支持列表
paramiko.Transport._preferred_pubkeys = (
    'rsa-sha2-256',
    'rsa-sha2-512',
    'ssh-rsa',
    'ecdsa-sha2-nistp256',
    'ssh-ed25519'
)

mypkey = paramiko.RSAKey.from_private_key_file('/Users/some_user/.ssh/id_rsa')

with SSHTunnelForwarder(
          ("host", 22),
          ssh_username="some_user",
          ssh_pkey=mypkey,
          remote_bind_address=("localhost", 3306)
     ) as server:
    with connect(
        host="127.0.0.1",
        port=server.local_bind_port, # 你原有代码漏了这行配置,会导致数据库默认连接本地3306端口而非SSH隧道转发的端口,也会引发连接异常
        user="some_user",
        password='some_password'
     ) as connection:
        print(connection)

2. DBeaver 修复方案

  • 打开DBeaver的连接编辑页面,切换到「SSH」标签页
  • 点击「高级设置」,在公钥算法列表中勾选rsa-sha2-256和rsa-sha2-512
  • 保存配置后重新连接即可

可选:生成兼容旧客户端的RSA密钥

如果你需要生成全兼容的密钥,可以执行以下命令重新生成:

ssh-keygen -t rsa -b 4096 -m PEM -o "PubkeyAcceptedKeyTypes=+ssh-rsa"

生成后将新的公钥上传到服务器~/.ssh/authorized_keys文件中即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 13:54:04