SSH的的Port Forward,中文能夠稱爲端口轉發,是SSH的一項很是重要的功能。它能夠創建一條安全的SSH通道,並把任意的TCP鏈接放到這條通道中。下面仔細就仔細討論SSH的這種很是有用的功能。linux
SSH Tunnel有三種,分別是本地Local(ssh -NfL),遠程Remote(ssh -NfR),動態Dynamic(ssh -NfD)。(含義參考man ssh)瀏覽器
說明:在咱們舉例說明用法以前,先假設你有一臺SSH機器,它的IP是a.b.c.d。
1:本地Local(ssh -NfL)安全
ssh -L <local port>:<remote host>:<remote port> <SSH hostname>
ssh -NfL a.b.c.d:1234:www.google.com:80 a.b.c.d
此時,在瀏覽器裏鍵入:http://a.b.c.d:1234,就會看到Google的頁面了。
在綁定1234端口的時候,能夠省略前面的ip,如此一來,1234端口就僅僅綁定在localhost地址上,更安全:
ssh -NfL 1234:www.google.com:80 a.b.c.d
此時瀏覽的話就要在a.b.c.d機器上使用http://localhost:1234了。
什麼時候使用本地Tunnel?
好比說你在本地訪問不了某個網絡服務(如www.google.com),而有一臺機器(如:a.b.c.d)能夠,那麼你就能夠經過這臺機器來訪問。
2:遠程Remote(ssh -NfR)網絡
ssh -R <local port>:<remote host>:<remote port> <SSH hostname>
在須要被訪問的內網機器上運行: ssh -NfR 1234:localhost:22 a.b.c.d
登陸到a.b.c.d機器,使用以下命令鏈接內網機器:
ssh -p 1234 localhost
須要注意的是上下兩個命令裏的localhost不是同一臺。這時你會發現本身已經連上最開始命令裏的localhost機器了,也就是執行「ssh -NfR」的那臺機器。
什麼時候使用遠程Tunnel?
好比當你下班回家後就訪問不了公司內網的機器了,遇到這種狀況能夠事先在公司內網的機器上執行遠程Tunnel,連上一臺公司外網的機器,等你下班回家後 就能夠經過公司外網的機器去訪問公司內網的機器了。ssh
3:動態Dynamic(ssh -NfD)-Socket代理測試
ssh -D
ssh -NfD 1234 a.b.c.dgoogle
a.b.c.c 是server 地址.net
如此一來就創建了一臺Socket代理機器,接着在瀏覽器上設置Socket代理:地址是localhost,端口是1234,今後之後,你的訪問都是加 密的了!你能夠經過訪問WhatIsMyIP來 確認本身如今的IP,看看是否是已經變成a.b.c.d了。
測試階段,也能夠把端口綁定在外網地址上,如此一來,你在瀏覽器上就可使用外網地址設置Socket代理,但這僅限於測試,不然,你的機器就不安全了, 隨時可能成爲肉雞。對於Windows用戶來講,若是討厭命令行,還可使用MyEnTunnel來實現一樣的功能,配合Firefox的 FoxyPorxy,基本就無敵了,至於具體的配置方法,小崔已經寫好了:使用Firefox+foxyProxy+SSH翻山越嶺。若是你使用的是Chrome的話,則能夠選擇 Proxy Switchy!來實現一樣的效果,恕很少言。firefox