資源描述:
《基于SSH端口轉(zhuǎn)發(fā)的概述與實(shí)例》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、基于SSH端口轉(zhuǎn)發(fā)的概述與實(shí)例端口轉(zhuǎn)發(fā)概念讓我們先來了解一下端口轉(zhuǎn)發(fā)的概念吧。我們知道,SSH會白動(dòng)加密和解密所有-SSH客戶端與服務(wù)端之間的網(wǎng)絡(luò)數(shù)據(jù)。但是,SSH還同時(shí)捉供了一個(gè)非常有用的功能,這就是端口轉(zhuǎn)發(fā)。它能夠?qū)⑵渌鸗CP端口的網(wǎng)絡(luò)數(shù)據(jù)通過SSH鏈接來轉(zhuǎn)發(fā),并且H動(dòng)提供了相應(yīng)的加密及解密服務(wù)。這一過程冇時(shí)也被叫做“隧道”(tunneling),這是因?yàn)镾SH為其他TCP鏈接提供了一個(gè)安全的通道來進(jìn)行傳輸而得名。例如,Telnet,SMTP,LDAP這些TCP應(yīng)用均能夠從中得益,避免了用戶名,密
2、碼以及隱私信息的明文傳輸。而與此同時(shí),如果您工作壞境屮的防火墻限制了一些網(wǎng)絡(luò)端口的使用,但是允許SSH的連接,那么也是能夠通過將TCP端口轉(zhuǎn)發(fā)來使用SSH進(jìn)行通訊??偟膩碚fSSH端口轉(zhuǎn)發(fā)能夠提供兩人功能:1、加密SSHOient端至SSHServer端Z間的通訊數(shù)據(jù)。2、突破防火墻的限制完成一些Z前無法建立的TCP連接。如上圖所示,使用了端口轉(zhuǎn)發(fā)之示,TCP端口A與B之間現(xiàn)在并不宜接通訊,而是轉(zhuǎn)發(fā)到了SSH客八端及服務(wù)端來通訊,從而自動(dòng)實(shí)現(xiàn)了數(shù)據(jù)加密并同時(shí)繞過了防火墻的限制。本地轉(zhuǎn)發(fā)我們先來看第一個(gè)例
3、子,在實(shí)驗(yàn)室里有一臺LDAP服務(wù)器(LdapServerHost),但是限制了只有木機(jī)上部署的應(yīng)用才能肓接連接此LDAP服務(wù)器。如果我們由于調(diào)試或者測試的需要想臨吋從遠(yuǎn)程機(jī)器(LdapQientHost)直接連接到這個(gè)LDAP服務(wù)器,有什么方法能夠?qū)崿F(xiàn)呢?答案無疑是本地端口轉(zhuǎn)發(fā)了,它的命令格式是:ssh-L::在LdapOientHost上執(zhí)行如下命令即可建立一個(gè)SSH的木地端口轉(zhuǎn)發(fā),例如:$ssh-L70
4、01:localhost:389LdapServerHostLDAPClientPort7001Port7001SSHClientSSHClientLDAPServer□□00LDAPPoit389SSHServer)這里需要注意的是本例中我們選擇了7001端口作為本地的監(jiān)聽端口,在選擇端口號時(shí)耍注意非管理員帳號是無權(quán)綁定「1023端口的,所以一般是選用一個(gè)1024-65535之間的并尚未使用的端口號即可。然后我們可以將遠(yuǎn)程機(jī)器(LdapQientHost)上的應(yīng)用宜接配置到本機(jī)的7001端II上(而
5、不是LDAP服務(wù)器的389端口上)。之后的數(shù)據(jù)流將會是下面這個(gè)樣子:1、我們在LdapOientHost±的應(yīng)用將數(shù)據(jù)發(fā)送到本機(jī)的7001端口上;2、而木機(jī)的SSHOient會將7001端口收到的數(shù)據(jù)加密并轉(zhuǎn)發(fā)到LdapServertHost的SSHServer上。3、SSHServer會解密收到的數(shù)據(jù)并將Z轉(zhuǎn)發(fā)到監(jiān)聽的LDAP389端口上;4、最后再將從LDAP返回的數(shù)據(jù)原路返回以完成整個(gè)流程。我們可以看到,這整個(gè)流程應(yīng)用并沒有直接連接LDAP服務(wù)器,而是連接到了本地的一個(gè)監(jiān)聽端口,但是SSH端口轉(zhuǎn)
6、發(fā)完成了剩下的所有事情,加密,轉(zhuǎn)發(fā),解密,通訊。這里有幾個(gè)地方需要注意:1、SSH端口轉(zhuǎn)發(fā)是通過SSH連接建立起來的,我們必須保持這個(gè)SSH連接以使端口轉(zhuǎn)發(fā)保持生效。一口關(guān)閉了此連接,相應(yīng)的端口轉(zhuǎn)發(fā)也會隨之關(guān)閉。2、我們只能在建立SSH連接的同吋創(chuàng)建端口轉(zhuǎn)發(fā),而不能給一個(gè)已經(jīng)存在的SSH連接增加端口轉(zhuǎn)發(fā)。3、你可能會疑惑上面命令中的為什么用localhost,它指向的是哪臺機(jī)器呢?在本例中,它指向LdapServertHosto我們?yōu)槭裁从胠ocalhost而不是IP地址或者主
7、機(jī)名呢?其實(shí)這個(gè)取決于我們Z前是如何限制LDAP只冇木機(jī)才能訪問。如果只允許Iookback接口訪問的話,那么自然就只有l(wèi)ocalhost或者IP為127.0.0.1才能訪問了,而不能用真實(shí)IP或者主機(jī)名。4、命令屮的vremotehost>和必須是同一臺機(jī)器么?其實(shí)是不一定的,它們可以是兩臺不同的機(jī)器。5、好了,我們已經(jīng)在LdapOientHost建立了端口轉(zhuǎn)發(fā),那么這個(gè)端口轉(zhuǎn)發(fā)可以被其他機(jī)器使用么?比如能否新增加一臺LdapaientHost2來直接連接LdapOient
8、Host的7001端口?答案是不行的,在主流SSH實(shí)現(xiàn)中,本地端口轉(zhuǎn)發(fā)綁定的是lookback接口,這意味看只有l(wèi)ocalhost或者127.0.0.1才能使用本機(jī)的端口轉(zhuǎn)發(fā),具他機(jī)器發(fā)起的連接只會得到“connectionrefused.好在SSH同時(shí)提供了GatewayPorts關(guān)鍵字,我們可以通過指定它與其他機(jī)器共亨這個(gè)本地端口轉(zhuǎn)發(fā)。遠(yuǎn)程轉(zhuǎn)發(fā)我們來看笫二個(gè)例子,這次假設(shè)由于網(wǎng)絡(luò)或防火墻的原因我們不能用SSH直接從LdapOientHost連接到LD