ServerA:10.1.0.1
ServerB:10.1.0.2
ServerA中并不存在mysql服务。
ServerB中已经安装了mysql服务,mysql服务已经启动并监听了3306端口。
从serverA 上做SSH
本地转发
-
ssh -L 9906:10.1.0.2:3306 root@10.1.0.2
不可以关闭隧道的 ssh连接 -
ssh -f -N -L 9906:10.1.0.2:3306 root@10.1.0.2
-f -N配合一起,可以关闭第一次的 ssh连接 -
ssh -f -N -L 10.1.0.1:9906:10.1.0.2:3306 root@10.1.0.2
这个用法,会让serverA 的 IP 10.1.0.1的端口9906暴露在外 -
ssh -g -f -N -L 9906:10.1.0.2:3306 root@10.1.0.2
这个用法,会让serverA 的 所有IP 的端口9906暴露在外, -g是开启网关功能
远程转发
从serverB上做ssh
ssh -f -N -R 9906:10.1.0.2:3306 root@10.1.0.1
这样就行了,
ssh -f -N -R 10.1.0.1:9906:10.1.0.2:3306 root@10.1.0.1
在ServerB中执行上述命令时指定了IP或者开启了网关功能,ServerA的9906端口仍然只监听在127.0.0.1上,当然,如果你一心想要通过别的主机访问ServerA的9906端口,也可以使用其他程序去反代ServerA的9906端口,还有,我在实际的使用过程中,如果使用远程转发穿透到内网,ssh隧道将会非常不稳定,隧道会莫名其妙的消失或者失效,特别是在没有固定IP的网络内
详细的学习资料,请参考http://www.zsythink.net/archives/2450