ssh -NfR
遠端主機listen port:
遠端連回時導向的主機:
遠端連回本地主機時導向主機的port 帳號@遠端主機
ssh -Nf -R *:20001:127.0.0.1:22 root@192.168.1.228
ssh參數解釋:
-N:不執行任何指令
-f:背景執行
-R:主要建立reverse tunnel的參數
測試的時候其實不建議加上-N與-f的參數^^
有2台主机:
A:192.168.1.227
B:192.168.1.228
通过B主机建立一个反向链接:
1,在228主机创建一台监听端口20001
在227主机上执行: ssh -Nf -R *:20001:127.0.0.1:22 root@192.168.1.228
2通过另外一台机器,或者228主机 执行:ssh -p 20001 192.168.1.228
沒 有覺得很難懂?自己做一次或許就知道囉!透過Linux連線出去,若是這條tunnel斷了線,就絕對無法再從外部連線了,因此為了要預防ssh tunnel斷線,第一種方式請在.ssh/config內加入「serveraliveinterval 60」保持KeepAlive連線;第二種可以透過 autossh幫忙維持連線,若有任何斷線會再自動幫忙連線。
autossh 官方網站: http://www.harding.motd.ca/autossh/
編譯的方式不再多說,簡單的「./configure && make && make install」就可以完成安裝。
不透過ssh的command,直接利用ssh連線工具也可以達到反向tunnel的建立,拿上面的 範例3做示範。
putty與pietty的方式
Xshell的方式
ssh -Nf -R *:20001:127.0.0.1:22 root@192.168.1.228
ssh參數解釋:
-N:不執行任何指令
-f:背景執行
-R:主要建立reverse tunnel的參數
測試的時候其實不建議加上-N與-f的參數^^
有2台主机:
A:192.168.1.227
B:192.168.1.228
通过B主机建立一个反向链接:
1,在228主机创建一台监听端口20001
在227主机上执行: ssh -Nf -R *:20001:127.0.0.1:22 root@192.168.1.228
2通过另外一台机器,或者228主机 执行:ssh -p 20001 192.168.1.228
範例環境:
區域網路主機:
ServerA / Linux / user userA / ip 192.168.0.123 / ssh port 22
ServerB / Linux / user userB / ip 192.168.0.125 / ssh port 22
PC / Windows / ip 192.168.0.128 / 遠端桌面 port 3389
遠端主機:
MyServer / Linux / user me / ip 1.2.3.4 / ssh port 22
區域網路主機:
ServerA / Linux / user userA / ip 192.168.0.123 / ssh port 22
ServerB / Linux / user userB / ip 192.168.0.125 / ssh port 22
PC / Windows / ip 192.168.0.128 / 遠端桌面 port 3389
遠端主機:
MyServer / Linux / user me / ip 1.2.3.4 / ssh port 22
範例1:從MyServer ssh連回ServerA
[userA@ServerA] $ ssh -NfR 2222:localhost: 22 me@MyServer
--------------------------------------------------------------
[me@MyServer] $ netstat -tnl | grep 127.0.0.1
tcp 0 0 127.0.0.1: 2222 0.0.0.0:* LISTEN
[me@MyServer] $ ssh userA@127.0.0.1 -p 2222
MyServer連線到本機2222 port會導向到ServerA的ssh port,成功連線到ServerA
[userA@ServerA] $ ssh -NfR 2222:localhost: 22 me@MyServer
--------------------------------------------------------------
[me@MyServer] $ netstat -tnl | grep 127.0.0.1
tcp 0 0 127.0.0.1: 2222 0.0.0.0:* LISTEN
[me@MyServer] $ ssh userA@127.0.0.1 -p 2222
MyServer連線到本機2222 port會導向到ServerA的ssh port,成功連線到ServerA
範例2:從MyServer ssh連回ServerB
[userA@ServerA] $ ssh -NfR 2244:192.168.0.125: 22 me@MyServer
--------------------------------------------------------------
[me@MyServer] $ netstat -tnl | grep 127.0.0.1
tcp 0 0 127.0.0.1: 2244 0.0.0.0:* LISTEN
[me@MyServer] $ ssh userB@127.0.0.1 -p 2244
MyServer連線到本機2244 port會導向到ServerB的ssh port,成功連線到ServerB
[userA@ServerA] $ ssh -NfR 2244:192.168.0.125: 22 me@MyServer
--------------------------------------------------------------
[me@MyServer] $ netstat -tnl | grep 127.0.0.1
tcp 0 0 127.0.0.1: 2244 0.0.0.0:* LISTEN
[me@MyServer] $ ssh userB@127.0.0.1 -p 2244
MyServer連線到本機2244 port會導向到ServerB的ssh port,成功連線到ServerB
範例3:從MyServer遠端桌面PC
[userA@ServerA] $ ssh -NfR 2266:192.168.0.128: 3389 me@MyServer
--------------------------------------------------------------
[me@MyServer] $ netstat -tnl | grep 127.0.0.1
tcp 0 0 127.0.0.1: 2266 0.0.0.0:* LISTEN
[me@MyServer] $ rdesktop 127.0.0.1: 2266
若你在Linux的桌面環境則可以直接display遠端桌面PC的連線,不然就export DISPLAY到其他主機。
[userA@ServerA] $ ssh -NfR 2266:192.168.0.128: 3389 me@MyServer
--------------------------------------------------------------
[me@MyServer] $ netstat -tnl | grep 127.0.0.1
tcp 0 0 127.0.0.1: 2266 0.0.0.0:* LISTEN
[me@MyServer] $ rdesktop 127.0.0.1: 2266
若你在Linux的桌面環境則可以直接display遠端桌面PC的連線,不然就export DISPLAY到其他主機。
沒 有覺得很難懂?自己做一次或許就知道囉!透過Linux連線出去,若是這條tunnel斷了線,就絕對無法再從外部連線了,因此為了要預防ssh tunnel斷線,第一種方式請在.ssh/config內加入「serveraliveinterval 60」保持KeepAlive連線;第二種可以透過 autossh幫忙維持連線,若有任何斷線會再自動幫忙連線。
autossh 官方網站: http://www.harding.motd.ca/autossh/
編譯的方式不再多說,簡單的「./configure && make && make install」就可以完成安裝。
autossh使用方式:
12345是隨機指定的,不管在MyServer或是ServerA都會Listen,連上之後可以測試砍掉MyServer上的ServerA的連線,autossh會自動在ServerA上重新連線,就是透過autossh保持tunnel永遠不斷線。
套用在上面的範例1:從MyServer ssh連回ServerA
[userA@ServerA] $ autossh -M 12345 -NfR 2222:localhost:22 me@MyServer
[userA@ServerA] $ autossh -M 12345 -NfR 2222:localhost:22 me@MyServer
12345是隨機指定的,不管在MyServer或是ServerA都會Listen,連上之後可以測試砍掉MyServer上的ServerA的連線,autossh會自動在ServerA上重新連線,就是透過autossh保持tunnel永遠不斷線。
不透過ssh的command,直接利用ssh連線工具也可以達到反向tunnel的建立,拿上面的 範例3做示範。
putty與pietty的方式
Xshell的方式