通过多个隧道访问 MySQL 实例

通过多个隧道访问 MySQL 实例

我有一个 MySQL 实例在一台服务器上运行,我无法直接访问,只能通过另一台服务器访问,所以我必须像这样访问它:

[local] --> [server1] --> [server2]

我应该使用哪个命令来执行此操作?我尝试了所有方法,但似乎在第一个命令上就停止了。

这是我尝试过的命令之一:

ssh -N -p 22 -c 3des [email protected] -L 3306/1.1.1.1/3310 -R 3310/2.2.2.2/3306

1.1.1.1->服务器1

2.2.2.2->服务器2

提前致谢

答案1

让我们分解一下

-N

我假设你不想执行远程命令,否则你可以这样做

ssh -t [email protected] "ssh [email protected]"

然后-p 22 -c 3des端口并明确选择一个密码

本地绑定-L 3306/1.1.1.1/3310转换为 local-port:remote-host:remote-port

到目前为止,您正在连接并将[email protected]您机器上的端口 3306 绑定到 1.1.1.1 上的 3310。

-R作用与 完全相反-L。您可以远程绑定端口,因此当您连接到该远程主机端口时,实际上是在本地进行连接。

至少有两种方法可以做到这一点。要么然后, 要么检查ssh -f -N [email protected] -L 3306:2.2.2.2:3310ssh myUser@localhost -p 3306ssh_配置并添加类似这样的内容

Host 1.1.1.1
    HostName 1.1.1.1
    User myUser
    LocalForward 3306 127.0.0.1:3310

答案2

如果你的 MySQL 正在运行server2,你可以尝试:

ssh -L 3306:2.2.2.2:3306 1.1.1.1

这将在您本地的 3306 端口和 3306 端口之间建立隧道server2

然后您连接到localhost您的 MySQL 客户端。

相关内容