通过 ssh 迁移工作台 - 如何设置隧道

Posted

技术标签:

【中文标题】通过 ssh 迁移工作台 - 如何设置隧道【英文标题】:Workbench migration via ssh - how to set up a tunnel 【发布时间】:2015-08-26 00:45:04 【问题描述】:

我尝试使用 Workbench 将 MSSQL(本地计算机)迁移到 mysql(亚马逊网络服务)。我可以连接到两个数据库。但是,当我迁移时,出现此错误:

此版本不支持通过 SSH 连接 Mysql...

嗯,我在文档中找到了这个:

一种解决方法是设置加密隧道,然后将 MySQL 目标视为标准 TCP(未加密)连接。

但我不知道如何设置隧道。有人可以帮忙吗?

【问题讨论】:

您是否正在从 MS SQL Server 隧道连接到 AWS MySQL 机器?如果是这样,您使用的是 Putty 吗? 我在 Windows 机器上,是的,我尝试了腻子。我可以在腻子和工作台中设置 ssh 连接。问题是Workbench需要隧道,不知道怎么设置。 【参考方案1】:

好的,如果我理解正确的话,我想我更愿意在 Putty 中设置一个隧道。我对 MySQL Workbench 的工作原理没有深入的了解(我假设它类似于 SSMS),但我曾经使用过 maaany SSH 隧道。以下是一些基本说明:

http://www.electrictoolbox.com/putty-create-ssh-port-tunnel/

您需要创建一个从您选择的任何端口(虽然我会使用 MySQL 默认 3306)到目的地127.0.0.1:3306 的本地隧道。请务必单击添加并将会话设置保存在 Putty 中。

打开与 AWS 机器的 SSH 连接。尝试通过127.0.0.1:3306 连接到您的 MySQL 实例。这应该允许您从本地 SQL Server 中提取数据并将数据发送到您的 AWS 实例(当然是通过隧道,127.0.0.1:3306)。

希望这会有所帮助。如果这不能解决您的问题,请告诉我。

【讨论】:

我按照您的指示创建了一条隧道。在腻子中,我在日志中看到本地端口 3306 转发到主机:3306。但是我无法使用 Workbench (127.0.0.1:3306) 连接到 AWS 上的 mysql .. 嗯,不确定 host:3306 部分是否正确。您在 Putty 中的隧道部分看起来像这样吗? i.imgur.com/rGFC0n7.png 不,我所说的主机是指 ec2 服务器公共 IP 地址。 这可能是问题所在。目的地必须是127.0.0.1:3306。隧道将流量从您的本地机器传输到 EC2 实例。当它到达 EC2 实例时,它会到达目标 IP 和端口。通过说127.0.0.1:3306,您是在告诉 EC2 实例将流量发送到 127.0.0.1,基本上是它自己,在端口 3306 上,即 MySQL 端口。 你是对的。我尝试将 127.0.0.1:3306 作为目的地 - 它有效!现在 Workbench 像疯了一样迁移。谢谢!【参考方案2】:

如果您有 Amazon ec2: 在 Windows 机器上通过 ssh 使用 putty 连接:

    在会话主机名中 (user@public_ip_address) 连接 -> SSH -> 隧道(源端口:3306 或选择免费端口)和(目标 127.0.0.1:3306) 您可以检查是否在事件日志中建立了隧道(右键单击终端栏) 现在在 Workbench 中,您可以在没有 SSH 的情况下使用 TCP/IP。

谢谢大家!

【讨论】:

以上是关于通过 ssh 迁移工作台 - 如何设置隧道的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 不再通过 ssh -D 隧道工作

如何使用 ssh 隧道将谷歌数据工作室连接到 AWS 上的 postgres 无服务器?

如何为 ipython 集群(ipcluster)设置 ssh 隧道

通过 SSH 隧道访问 Ezproxy

没有 SSH 的情况下,像“Localtunnel”这样的隧道服务如何工作?

ssh 隧道腻子 - UI 应用程序登录无法从浏览器工作