当常规 ssh 隧道正常工作时,通过工作台到 MySql 的隧道不起作用

当常规 ssh 隧道正常工作时,通过工作台到 MySql 的隧道不起作用

我正在尝试通过 SSH 隧道访问 mysql 服务器。我的理解是,Mysql Workbench(Ubuntu 10 上的 5.2.35)应该原生支持此功能。以下方法有效:

打开外壳

ssh -f [email protected] -L 33187:server.domain.com:3306 -N

打开 MySql Workbench

使用端口 33187 和连接方法“标准 TCP/IP”连接到本地主机

以下操作无效:

终止所有 ssh 端口转发以从头开始。

打开 Mysql 工作台

选择连接方法“标准 TCP/IP over SSH”

输入以下连接变量(看起来与之前工作的 ssh 命令一致):

  • SSH 主机名:server.domain.com
  • SSH 用户名:jblow
  • SSH 密码:server.domain.com 上的 jblow 密码
  • MySQL 主机名:localhost(或 127.0.0.1,两种方式都试过了)
  • MySQL 服务器端口:33187

最终目标是提供一个工作台配置文件,其中包含许多服务器的正确设置(不包括密码),用户(开发人员)可以简单地将其放置在他们的机器上,并能够通过 mysql 工作台首页上列出的现有连接轻松访问适当的数据库。最坏的情况是,我可以给他们一个 bash 脚本,让他们放入他们的 .bashrc 和工作台配置文件中……但如果可以的话,我更喜欢一个文件,特别是因为我有 Windows 用户,所以如果我可以使用工作台配置文件,那么对于 Windows 用户和 Linux 用户来说,它基本上是相同的过程。

注意:目标是让 mysql workbench 从远程服务器上的端口 3306 映射到本地的其他端口(如示例 ssh 命令中发生的情况)。将 3306 作为 MySQL 服务器端口会导致错误,因为 3306 在我的本地计算机上不可用(因为它正在运行本地 mysql 实例)。进一步研究之后,似乎这是不可能的。如果我终止本地 mysql 服务器实例(释放端口 3306),则 mysql workbench 可以使用 3306 作为 mysql 服务器端口(这是远程计算机上的正确端口)进行连接,但似乎没有办法仅通过 mysql workbench 同时支持本地 mysql 实例和通过 ssh 的远程连接,因为它会发生端口冲突。我认为使用端口映射需要一些 iptables 条目或与 mysql workbench 配置分开进行 ssh 隧道连接。

答案1

您正在反向执行 ssh 转发,即您正在将本地端口 3306 转发到 33187,请使用 -R localhost:33187:server.domain.com:3306。对于工作台,请使用 MySQL 服务器端口 3306 和 MySQL 主机名:localhost

您收到的错误具体是什么?我自己在使用自定义 ssh 端口时遇到问题,即 SSH 主机名 server.mydomain.com:13711,工作台无论出于何种原因都没有真正尝试连接(通过查看日志进行验证)

答案2

MySQL Hostname: localhost (or 127.0.0.1, tried it both ways)
MySQL Server Port: 33187

更改为:

MySQL Hostname: server.domain.com
MySQL Server Port: 3306

然后再试一次。

相关内容