第一部分 SSH端口轉(zhuǎn)發(fā)概述
當(dāng)你在咖啡館享受免費(fèi) WiFi 的時(shí)候,有沒有想到可能有人正在竊取你的密碼及隱私信息?當(dāng)你發(fā)現(xiàn)實(shí)驗(yàn)室的防火墻阻止了你的網(wǎng)絡(luò)應(yīng)用端口,是不是有苦難言?來看看 SSH 的端口轉(zhuǎn)發(fā)功能能給我們帶來什么好處吧!
SSH端口轉(zhuǎn)發(fā)概述
讓我們先來了解一下端口轉(zhuǎn)發(fā)的概念吧。我們知道,SSH 會(huì)自動(dòng)加密和解密所有 SSH 客戶端與服務(wù)端之間的網(wǎng)絡(luò)數(shù)據(jù)。但是,SSH 還同時(shí)提供了一個(gè)非常有用的功能,這就是端口轉(zhuǎn)發(fā)。
它能夠?qū)⑵渌?TCP 端口的網(wǎng)絡(luò)數(shù)據(jù)通過 SSH 鏈接來轉(zhuǎn)發(fā),并且自動(dòng)提供了相應(yīng)的加密及解密服務(wù)。這一過程有時(shí)也被叫做“隧道”(tunneling),這是因?yàn)?SSH 為其他 TCP 鏈接提供了一個(gè)安全的通道來進(jìn)行傳輸而得名。
例如,Telnet,SMTP,LDAP 這些 TCP 應(yīng)用均能夠從中得益,避免了用戶名,密碼以及隱私信息的明文傳輸。而與此同時(shí),如果您工作環(huán)境中的防火墻限制了一些網(wǎng)絡(luò)端口的使用,但是允許 SSH 的連接,那么也是能夠通過將 TCP 端口轉(zhuǎn)發(fā)來使用 SSH 進(jìn)行通訊。
總的來說 SSH 端口轉(zhuǎn)發(fā)能夠提供兩大功能:
加密 SSH Client 端至 SSH Server 端之間的通訊數(shù)據(jù)。
突破防火墻的限制完成一些之前無法建立的 TCP 連接。
圖 1. SSH 端口轉(zhuǎn)發(fā)
如上圖所示,使用了端口轉(zhuǎn)發(fā)之后,TCP 端口 A 與 B 之間現(xiàn)在并不直接通訊,而是轉(zhuǎn)發(fā)到了 SSH 客戶端及服務(wù)端來通訊,從而自動(dòng)實(shí)現(xiàn)了數(shù)據(jù)加密并同時(shí)繞過了防火墻的限制。
第二部分 SSH本地端口轉(zhuǎn)發(fā)與遠(yuǎn)程端口轉(zhuǎn)發(fā)
SSH本地端口轉(zhuǎn)發(fā)實(shí)例分析
我們先來看第一個(gè)例子,在實(shí)驗(yàn)室里有一臺(tái) LDAP 服務(wù)器(LdapServerHost),但是限制了只有本機(jī)上部署的應(yīng)用才能直接連接此 LDAP 服務(wù)器。
如果我們由于調(diào)試或者測試的需要想臨時(shí)從遠(yuǎn)程機(jī)器(LdapClientHost)直接連接到這個(gè) LDAP 服務(wù)器 , 有什么方法能夠?qū)崿F(xiàn)呢?
答案無疑是本地端口轉(zhuǎn)發(fā)了,它的命令格式是:
ssh -L <local port>:<remote host>:<remote port> <SSH hostname>
在 LdapClientHost 上執(zhí)行如下命令即可建立一個(gè) SSH 的本地端口轉(zhuǎn)發(fā),例如:
$ ssh -L 7001:localhost:389 LdapServerHost
圖 2. 本地端口轉(zhuǎn)發(fā)
這里需要注意的是本例中我們選擇了 7001 端口作為本地的監(jiān)聽端口,在選擇端口號(hào)時(shí)要注意非管理員帳號(hào)是無權(quán)綁定 1-1023 端口的,所以一般是選用一個(gè) 1024-65535 之間的并且尚未使用的端口號(hào)即可。
然后我們可以將遠(yuǎn)程機(jī)器(LdapClientHost)上的應(yīng)用直接配置到本機(jī)的 7001 端口上(而不是 LDAP 服務(wù)器的 389 端口上)。之后的數(shù)據(jù)流將會(huì)是下面這個(gè)樣子:
我們?cè)?LdapClientHost 上的應(yīng)用將數(shù)據(jù)發(fā)送到本機(jī)的 7001 端口上,
而本機(jī)的 SSH Client 會(huì)將 7001 端口收到的數(shù)據(jù)加密并轉(zhuǎn)發(fā)到 LdapServertHost 的 SSH Server 上。
SSH Server 會(huì)解密收到的數(shù)據(jù)并將之轉(zhuǎn)發(fā)到監(jiān)聽的 LDAP 389 端口上,
最后再將從 LDAP 返回的數(shù)據(jù)原路返回以完成整個(gè)流程。
我們可以看到,這整個(gè)流程應(yīng)用并沒有直接連接 LDAP 服務(wù)器,而是連接到了本地的一個(gè)監(jiān)聽端口,但是 SSH 端口轉(zhuǎn)發(fā)完成了
剩下的所有事情,加密,轉(zhuǎn)發(fā),解密,通訊。
這里有幾個(gè)地方需要注意:
SSH 端口轉(zhuǎn)發(fā)是通過 SSH 連接建立起來的,我們必須保持這個(gè) SSH 連接以使端口轉(zhuǎn)發(fā)保持生效。一旦關(guān)閉了此連接,相應(yīng)的端口轉(zhuǎn)發(fā)也會(huì)隨之關(guān)閉。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注