通过多个隧道到达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 – > server1

2.2.2.2 – > server2

提前致谢

我们来分解一下

 -N 

我假设你不想执行远程命令,否则你可以完成

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

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

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

在此之前,您正在将[email protected]和绑定端口3306连接到1.1.1.1上的3310。

-R-L完全相反。 当您连接到本地连接的远程主机端口时,远程绑定端口。

至less有两种方法可以做到这一点。 无论是ssh -f -N [email protected] -L 3306:2.2.2.2:3310 ,然后ssh myUser@localhost -p 3306或检查ssh_config并添加像这样的东西

 Host 1.1.1.1 HostName 1.1.1.1 User myUser LocalForward 3306 127.0.0.1:3310 

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

 ssh -L 3306:2.2.2.2:3306 1.1.1.1 

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

然后,您在MySQL客户端连接到localhost