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