【问题标题】:Connect to MySQL over SSH with agent using MySQL Workbench (or other)使用 MySQL Workbench(或其他)通过代理通过 SSH 连接到 MySQL
【发布时间】:2025-11-24 07:20:05
【问题描述】:

我使用我的 Keepass 中的插件 keeagent 连接任何 SSH 会话(它就像选美比赛一样工作)。所以我从来没有输入我的密码,私钥存储在我的 keepass 文件中。它存在几个工具,可以很好地使用 SSH 代理。但我没有找到使用 MySQL Workbench 中的代理来使用 SSH 隧道的方法。

是否可以使用代理通过 SSH 隧道连接 MySQL Workbench?

如果没有,有谁知道,哪个工具支持这个功能?

【问题讨论】:

    标签: mysql sql database ssh mysql-workbench


    【解决方案1】:

    首先,MySQL Workbench 本身可以创建 SSH 隧道。当您选择 TCP/IP over SSH 连接时,您可以确定所有详细信息。

    而且 MySQL Workbench 还可以使用系统中任何现有的隧道(来自 keeagent 或 putty)。您只需要知道隧道使用的本地端口并将其用于 MySQL Workbench 中的连接。它出现在 WB 中,就好像你有本地连接一样。

    【讨论】:

    • 您好,谢谢您的回复,但我尝试使用以下功能连接到数据库:MySQL 工作台中的 TCP/IP over SSH。此功能需要密钥文件的目录路径,我无法配置该密钥文件以使用现有代理(如 pageant oder keeagent)建立 ssh 连接。
    • 那些密钥代理为您管理密钥文件,方便。 MySQL Workbench 的 SSH 实现(目前是 paramiko 库)希望直接访问密钥文件,但前提是您使用基于密钥的身份验证。尝试找到您的密钥代理管理的密钥文件,例如在您的用户目录中,子文件夹.ssh。这个文件夹是如此的标准,以至于许多实现会自动使用密钥文件id_rsa(如果它存在)。
    • 好的,谢谢,澄清一下,在这种情况下不能使用代理,因为 MySQL Workbench 需要直接访问文件?
    • 好吧,我的意思是 如果 WB 用于 SSH 访问,它需要直接访问密钥文件。但是,WB 很容易使用由另一个应用程序创建的现有隧道(如我的回答中所述)。在这种情况下,其他应用正在管理密钥文件。
    【解决方案2】:

    MySQL Workbench 不支持在 SSH 隧道时使用 SSH 代理,仅支持密码和无密码密钥。后者:仅当 SSH 密钥没有密码时才支持。这是 MySQL Workbench 8.0.19 的版本。

    TablePlus 客户端确实支持使用代理;更具体地说,它使用标准 ssh_config 提取通过 SSH 主机连接时要使用的各种选项。

    【讨论】: