为 mysql 服务器建立多跳 SSH 隧道(3-4 跳)

为 mysql 服务器建立多跳 SSH 隧道(3-4 跳)

我正在尝试访问远程网络上的 mysql 服务器,为了访问它,我目前必须进行多次 ssh 跳转,这样我才能使用 mysql 命令行界面。我真的很想建立一个多跳隧道,这样我就可以从我的桌面使用 gui。这将如何工作?

顺序如下:

MacDesktop-->DevServer-->StageServer-->Mysql01

所有(除 Mac 桌面外)都是 Linux 机器,mysql 在标准端口上运行。有什么提示吗?或者确切的连接字符串?

答案1

您可以使用 ssh 来转发端口(假设 mysql 服务器配置为接受来自端口 3306 上的 StageServer 的连接):

# Forward port 3306 from Mysql01 to local port 3306 on DevServer using StageServer in the middle
DevServer > ssh -L 3306:Mysql01:3306 StageServer
# Forward the local port 3306 on DevServer to local port 3306 on your Mac
MacDesktop> ssh -L 3306:127.0.0.1:3306 DevServer

现在配置 gui 客户端以连接到 127.0.0.1:3306(确保您没有在 Mac 上运行 mysql,否则转发到端口 3306 将失败,或者使用其他端口进行转发)

编辑:确保在 ssh 服务器配置中启用了本地端口转发。

答案2

我知道这个问题很老了,但它仍然非常有用。

使用多行命令创建链式隧道,如下所示:

ssh -f <DevServer> "ssh -f -L 5678:<MySQL01>:3306 <StageServer> \"sleep 10\"";\
ssh -f -L 3306:127.0.0.1:5678 <DevServer> "sleep 10";\
mysqlsh --sql -h127.0.0.1 -P3306 -u<UserName> -D<Schema>

这会将 MySQL 客户端实用程序连接到远程数据库,然后当您退出时,两个隧道都会关闭。本例中的隧道通过端口 5678 运行,但您可以使用任何未使用的端口号。

相关内容