亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

SSH端口轉發,本地端口轉發,遠程端口轉發,動態端口轉發詳解

2024-09-01 13:55:48
字體:
來源:轉載
供稿:網友

第一部分 SSH端口轉發概述

當你在咖啡館享受免費 WiFi 的時候,有沒有想到可能有人正在竊取你的密碼及隱私信息?當你發現實驗室的防火墻阻止了你的網絡應用端口,是不是有苦難言?來看看 SSH 的端口轉發功能能給我們帶來什么好處吧!

SSH端口轉發概述

讓我們先來了解一下端口轉發的概念吧。我們知道,SSH 會自動加密和解密所有 SSH 客戶端與服務端之間的網絡數據。但是,SSH 還同時提供了一個非常有用的功能,這就是端口轉發。

它能夠將其他 TCP 端口的網絡數據通過 SSH 鏈接來轉發,并且自動提供了相應的加密及解密服務。這一過程有時也被叫做“隧道”(tunneling),這是因為 SSH 為其他 TCP 鏈接提供了一個安全的通道來進行傳輸而得名。

例如,Telnet,SMTP,LDAP 這些 TCP 應用均能夠從中得益,避免了用戶名,密碼以及隱私信息的明文傳輸。而與此同時,如果您工作環境中的防火墻限制了一些網絡端口的使用,但是允許 SSH 的連接,那么也是能夠通過將 TCP 端口轉發來使用 SSH 進行通訊。

總的來說 SSH 端口轉發能夠提供兩大功能:

加密 SSH Client 端至 SSH Server 端之間的通訊數據。

突破防火墻的限制完成一些之前無法建立的 TCP 連接。

圖 1. SSH 端口轉發

SSH,端口轉發,本地端口轉發,遠程端口轉發,動態端口轉發

如上圖所示,使用了端口轉發之后,TCP 端口 A 與 B 之間現在并不直接通訊,而是轉發到了 SSH 客戶端及服務端來通訊,從而自動實現了數據加密并同時繞過了防火墻的限制。

第二部分 SSH本地端口轉發與遠程端口轉發

SSH本地端口轉發實例分析

我們先來看第一個例子,在實驗室里有一臺 LDAP 服務器(LdapServerHost),但是限制了只有本機上部署的應用才能直接連接此 LDAP 服務器。

如果我們由于調試或者測試的需要想臨時從遠程機器(LdapClientHost)直接連接到這個 LDAP 服務器 , 有什么方法能夠實現呢?

答案無疑是本地端口轉發了,它的命令格式是:

ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

在 LdapClientHost 上執行如下命令即可建立一個 SSH 的本地端口轉發,例如:

$ ssh -L 7001:localhost:389 LdapServerHost

圖 2. 本地端口轉發

SSH,端口轉發,本地端口轉發,遠程端口轉發,動態端口轉發

這里需要注意的是本例中我們選擇了 7001 端口作為本地的監聽端口,在選擇端口號時要注意非管理員帳號是無權綁定 1-1023 端口的,所以一般是選用一個 1024-65535 之間的并且尚未使用的端口號即可。

然后我們可以將遠程機器(LdapClientHost)上的應用直接配置到本機的 7001 端口上(而不是 LDAP 服務器的 389 端口上)。之后的數據流將會是下面這個樣子:

我們在 LdapClientHost 上的應用將數據發送到本機的 7001 端口上,

而本機的 SSH Client 會將 7001 端口收到的數據加密并轉發到 LdapServertHost 的 SSH Server 上。

SSH Server 會解密收到的數據并將之轉發到監聽的 LDAP 389 端口上,

最后再將從 LDAP 返回的數據原路返回以完成整個流程。

我們可以看到,這整個流程應用并沒有直接連接 LDAP 服務器,而是連接到了本地的一個監聽端口,但是 SSH 端口轉發完成了

剩下的所有事情,加密,轉發,解密,通訊。

這里有幾個地方需要注意:

SSH 端口轉發是通過 SSH 連接建立起來的,我們必須保持這個 SSH 連接以使端口轉發保持生效。一旦關閉了此連接,相應的端口轉發也會隨之關閉。

我們只能在建立 SSH 連接的同時創建端口轉發,而不能給一個已經存在的 SSH 連接增加端口轉發。

你可能會疑惑上面命令中的 <remote host> 為什么用 localhost,它指向的是哪臺機器呢?在本例中,它指向 LdapServertHost 。我們為什么用 localhost 而不是 IP 地址或者主機名呢?

其實這個取決于我們之前是如何限制 LDAP 只有本機才能訪問。

如果只允許 lookback 接口訪問的話,那么自然就只有 localhost 或者 IP 為 127.0.0.1 才能訪問了,而不能用真實 IP 或者主機名。

命令中的 <remote host> 和 <SSH hostname> 必須是同一臺機器么?其實是不一定的,它們可以是兩臺不同的機器。我們在后面的例子里會詳細闡述這點。

好了,我們已經在 LdapClientHost 建立了端口轉發,那么這個端口轉發可以被其他機器使用么?比如能否新增加一臺 LdapClientHost2 來直接連接 LdapClientHost 的 7001 端口?

答案是不行的,在主流 SSH 實現中,本地端口轉發綁定的是 lookback 接口,這意味著只有 localhost 或者 127.0.0.1 才能使用本機的端口轉發

其他機器發起的連接只會得到“ connection refused. ”。

好在 SSH 同時提供了 GatewayPorts 關鍵字,我們可以通過指定它與其他機器共享這個本地端口轉發。

ssh -g -L <local port>:<remote host>:<remote port> <SSH hostname>

SSH遠程端口轉發實例分析

我們來看第二個例子,這次假設由于網絡或防火墻的原因我們不能用 SSH 直接從 LdapClientHost 連接到 LDAP 服務器(LdapServertHost),但是反向連接卻是被允許的。那此時我們的選擇自然就是遠程端口轉發了。

它的命令格式是:

ssh -R <local port>:<remote host>:<remote port> <SSH hostname>

例如在 LDAP 服務器(LdapServertHost)端執行如下命令:

$ ssh -R 7001:localhost:389 LdapClientHost

圖 3. 遠程端口轉發

SSH,端口轉發,本地端口轉發,遠程端口轉發,動態端口轉發

和本地端口轉發相比,這次的圖里,SSH Server 和 SSH Client 的位置對調了一下,但是數據流依然是一樣的。

我們在 LdapClientHost 上的應用將數據發送到本機的 7001 端口上,而本機的 SSH Server 會將 7001 端口收到的數據加密并轉發到 LdapServertHost 的 SSH Client 上。

SSH Client 會解密收到的數據并將之轉發到監聽的 LDAP 389 端口上,最后再將從 LDAP 返回的數據原路返回以完成整個流程。

看到這里,你是不是會有點糊涂了么?為什么叫本地轉發,而有時又叫遠程轉發?這兩者有什么區別?

本SSH地端口轉發與SSH遠程端口轉發的對比與分析

不錯,SSH Server,SSH Client,LdapServertHost,LdapClientHost,本地端口轉發,遠程端口轉發,

這么多的名詞的確容易讓人糊涂。

讓我們來分析一下其中的結構吧。

首先,SSH 端口轉發自然需要 SSH 連接,而 SSH 連接是有方向的,從 SSH Client 到 SSH Server 。

而我們的應用也是有方向的,比如需要連接 LDAP Server 時,LDAP Server 自然就是 Server 端,我們應用連接的方向也是從應用的 Client 端連接到應用的 Server 端。

如果這兩個連接的方向一致,那我們就說它是本地轉發。而如果兩個方向不一致,我們就說它是遠程端口轉發。

我們可以回憶上面的兩個例子來做個對照。

本地端口轉發時:

LdapClientHost 同時是應用的客戶端,也是 SSH Client,這兩個連接都從它指向 LdapServertHost(既是 LDAP 服務端,也是 SSH Server)。

遠程端口轉發時:

LdapClientHost 是應用的客戶端,但卻是 SSH Server ;而 LdapServertHost 是 LDAP 的服務端,但卻是 SSH Client 。這樣兩個連接的方向剛好相反。

另一個方便記憶的方法是

Server 端的端口都是預定義的固定端口(SSH Server 的端口 22,LDAP 的端口 389),而 Client 端的端口都是動態可供我們選擇的端口(如上述例子中選用的 7001 端口)。

如果 Server 端的兩個端口都在同一臺機器,Client 端的兩個端口都在另一臺機器上,那么這就是本地端口連接;

如果這四個端口交叉分布在兩個機器上,每臺機器各有一個 Server 端端口,一個 Client 端端口,那就是遠程端口連接。

弄清楚了兩者的區別之后,再來看看兩者的相同之處。

如果你所在的環境下,既允許 LdapClientHost 發起 SSH 連接到 LdapServerHost,也允許 LdapServerHost 發起 SSH 連接到 LdapClientHost 。

那么這時我們選擇本地轉發或遠程轉發都是可以的,能完成一樣的功能。

接著讓我們來看個進階版的端口轉發。

我們之前涉及到的各種連接 / 轉發都只涉及到了兩臺機器,還記得我們在本地轉發中提到的一個問題么?

本地端口轉發命令中的 <remote host> 和 <SSH hostname> 可以是不同的機器么?

ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

答案是可以的!讓我們來看一個涉及到四臺機器 (A,B,C,D) 的例子。

圖 4. 多主機轉發應用

SSH,端口轉發,本地端口轉發,遠程端口轉發,動態端口轉發

在 SSH Client(C) 執行下列命令來建立 SSH 連接以及端口轉發:

$ ssh -g -L 7001:<B>:389 <D>

然后在我們的應用客戶端(A)上配置連接機器(C )的 7001 端口即可。

注意我們在命令中指定了“ -g ”參數以保證機器(A)能夠使用機器(C)建立的本地端口轉發。

而另一個值得注意的地方是,在上述連接中,(A)<-> (C) 以及 (B)<->(D) 之間的連接并不是安全連接,它們之間沒有經過 SSH 的加密及解密。

如果他們之間的網絡并不是值得信賴的網絡連接,我們就需要謹慎使用這種連接方式了。

第三部分 其他類型的端口轉發

SSH動態端口轉發實例分析

恩,動態轉發,聽上去很酷。

當你看到這里時,有沒有想過我們已經討論過了本地轉發,遠程轉發,但是前提都是要求有一個固定的應用服務端的端口號,

例如前面例子中的 LDAP 服務端的 389 端口。那如果沒有這個端口號怎么辦?等等,

什么樣的應用會沒有這個端口號呢?嗯,比如說用瀏覽器進行 Web 瀏覽,比如說 MSN 等等。

當我們在一個不安全的 WiFi 環境下上網,用 SSH 動態轉發來保護我們的網頁瀏覽及 MSN 信息無疑是十分必要的。讓我們先來看一下動態轉發的命令格式:

$ ssh -D <local port> <SSH Server>

例如:

$ ssh -D 7001 <SSH Server>

圖 5. 動態端口轉發

SSH,端口轉發,本地端口轉發,遠程端口轉發,動態端口轉發

似乎很簡單,我們依然選擇了 7001 作為本地的端口號,其實在這里 SSH 是創建了一個 SOCKS 代理服務。來看看幫助文檔中對 -D 參數的描述:

-D port 
 This works by allocating a socket to listen to port on the local 
 side, and whenever a connection is made to this port, the con- 
 nection is forwarded over the secure channel, and the applica- 
 tion protocol is then used to determine where to connect to from 
 the remote machine.  Currently the SOCKS4 and SOCKS5 protocols 
 are supported, and ssh will act as a SOCKS server.  Only root 
 can forward privileged ports.  Dynamic port forwardings can also 
 be specified in the configuration file.

之后的使用就簡單了,我們可以直接使用 localhost:7001 來作為正常的 SOCKS 代理來使用,直接在瀏覽器或 MSN 上設置即可。

在 SSH Client 端無法訪問的網站現在也都可以正常瀏覽。而這里需要值得注意的是,此時 SSH 所包護的范圍只包括從瀏覽器端(SSH Client 端)到 SSH Server 端的連接,并不包含從 SSH Server 端 到目標網站的連接。

如果后半截連接的安全不能得到充分的保證的話,這種方式仍不是合適的解決方案。

X 協議端口轉發實例分析

好了,讓我們來看最后一個例子 - X 協議轉發。

我們日常工作當中,可能會經常會遠程登錄到 Linux/Unix/Solaris/HP 等機器上去做一些開發或者維護,也經常需要以 GUI 方式運行一些程序,比如要求圖形化界面來安裝 DB2/WebSphere 等等。

這時候通常有兩種選擇來實現:VNC 或者 X 窗口,讓我們來看看后者。

使用 X 窗口通常需要分別安裝:X Client 和 X Server 。

在本例中我們的 X Client 就是所訪問的遠程 Linux/Unix/Solaris/HP,而我們的 X Server 則是發起訪問的本地機器(例如你面前正在使用的筆記本或臺式機)。

把 X Client 端的 X 窗口顯示在 X Server 端需要先行在 X Client 端指定 X Server 的位置,命令格式如下:

export DISPLAY=<X Server IP>:<display #>.<virtual #>

例如:

export DISPLAY=myDesktop:1.0

然后直接運行 X 應用即可,X 窗口就會自動在我們的本地端打開。

一切運行正常,但是,這時候 IT 部門突然在遠程 Linux/Unix/Solaris/HP 前面加了一道防火墻。

非常不幸的是,X 協議并不在允許通過的列表之內。怎么辦?只能使用 VNC 了么?不,其實只要使用了 SSH 端口轉發即可通過,同時也對 X 通訊數據做了加密,真是一舉兩得。

(當然,使用此方法前最好先咨詢相關 IT 部門是否符合相應的安全條例,以免造成違規操作。)

建立命令也很簡單,直接從本地機器(X Server 端)發起一個如下的 SSH 連接即可:

$ ssh -X <SSH Server>

圖 5. X 轉發

SSH,端口轉發,本地端口轉發,遠程端口轉發,動態端口轉發

建立連接之后就可以直接運行遠程的 X 應用。注意建立 X 轉發之后會自動設置 DISPLAY 環境變量,通常會被設置成localhost:10.0,我們無需也不應該在連接之后再進行修改此環境變量。

一個比較常見的場景是,我們的本地機器是 Windows 操作系統,這時可以選擇開源的 XMing 來作為我們的 XServer,而 SSH Client 則可以任意選擇了,例如 PuTTY,Cygwin 均可以配置 訪問 SSH 的同時建立 X 轉發。

第四部分 SSH端口轉發總結

至此,我們已經完成了本地端口轉發,遠程端口轉發,動態端口轉發以及 X 轉發的介紹。

回顧起來,總的思路是通過將 TCP 連接轉發到 SSH 通道上以解決數據加密以及突破防火墻的種種限制。

對一些已知端口號的應用,例如 Telnet/LDAP/SMTP,我們可以使用本地端口轉發或者遠程端口轉發來達到目的。

動態端口轉發則可以實現 SOCKS 代理從而加密以及突破防火墻對 Web 瀏覽的限制。

對于 X 應用,無疑是 X 轉發最為適用了。雖然每一部分我們都只是簡單的介紹了一下,

但如果能靈活應用這些技巧,相信對我們的日常生活 / 工作也是會有所幫助的。

更多關于SSH端口轉發的文章請點擊下面的相關文章


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
2018中文字幕一区二区三区| 98视频在线噜噜噜国产| 国产精品高潮呻吟久久av黑人| 91社影院在线观看| 懂色aⅴ精品一区二区三区蜜月| 日韩欧美中文字幕在线观看| 在线成人中文字幕| 欧美激情2020午夜免费观看| 全球成人中文在线| 深夜福利一区二区| 久久精品国产亚洲| 色琪琪综合男人的天堂aⅴ视频| 国产精品久久久久久久久免费看| 欧美日韩国产中文精品字幕自在自线| 欧美成人一区在线| 国产91免费观看| 日韩在线视频免费观看| 久久免费视频网站| 精品亚洲aⅴ在线观看| 亚洲精品一区在线观看香蕉| 亚洲三级 欧美三级| 另类色图亚洲色图| 亚洲变态欧美另类捆绑| 91久久精品国产91性色| 日韩视频在线免费| 久久成人在线视频| 日韩国产高清视频在线| 亚洲人成人99网站| 亚洲综合成人婷婷小说| 综合136福利视频在线| 国产精品久久色| 精品久久久久久久久久久久久久| 亚洲丁香久久久| 亚洲自拍av在线| 亚洲色图综合久久| 久久久久久久久91| 日韩中文字幕久久| 国产乱肥老妇国产一区二| 国产精品自拍小视频| 97精品欧美一区二区三区| 国产成人精品a视频一区www| 欧美亚洲另类视频| 亚洲天堂日韩电影| 国产亚洲精品久久久久久牛牛| 丝袜亚洲另类欧美重口| 91在线免费网站| 色婷婷综合久久久久中文字幕1| 91chinesevideo永久地址| 国产这里只有精品| 日本精品久久中文字幕佐佐木| 欧洲亚洲免费在线| 日韩欧美精品在线观看| 国产综合久久久久久| 日本a级片电影一区二区| 国产精品视频最多的网站| 最近中文字幕mv在线一区二区三区四区| 成人国产亚洲精品a区天堂华泰| 国产成人精品亚洲精品| 久久综合亚洲社区| 欧美激情a在线| 最近更新的2019中文字幕| 日韩在线视频线视频免费网站| 国产999精品视频| 日韩电影免费观看在线观看| 国产98色在线| 18久久久久久| 亚洲色图av在线| 欧美日韩国产第一页| 91香蕉嫩草影院入口| 91夜夜未满十八勿入爽爽影院| 亚洲精品国产精品久久清纯直播| 黑人极品videos精品欧美裸| 久久久久久久香蕉网| 高清一区二区三区日本久| 日韩电影免费观看在线观看| 精品夜色国产国偷在线| 日韩免费av片在线观看| 国产亚洲欧洲高清| 欧美成人激情在线| 久久久久亚洲精品成人网小说| 韩国国内大量揄拍精品视频| 亚洲成人精品久久久| 亚洲aⅴ男人的天堂在线观看| 国产精品爱啪在线线免费观看| 国产拍精品一二三| 亚洲欧美日韩天堂一区二区| 久久久久久久久91| 亚洲欧美国产一区二区三区| 国产精品色午夜在线观看| 91成人性视频| 国产精品xxx视频| 97免费视频在线播放| 欧美巨猛xxxx猛交黑人97人| 亚洲乱码国产乱码精品精| 欧美性生交大片免网| 欧美日韩国产丝袜另类| 国产欧美日韩中文字幕在线| 亚洲精品videossex少妇| 久久影院中文字幕| 狠狠躁夜夜躁人人爽天天天天97| 亚洲国产成人久久综合一区| 九九久久久久99精品| 久久久精品一区二区三区| 国产极品jizzhd欧美| 亚洲精品456在线播放狼人| 中文字幕久热精品视频在线| 亚洲最大的av网站| 国产视频精品在线| 成人免费视频网| 欧美性videos高清精品| 一色桃子一区二区| 欧美激情国产日韩精品一区18| 国产日韩欧美在线看| 欧美性极品xxxx娇小| 欧美性猛交xxxx富婆| 亚洲欧美日韩另类| 一区二区三区视频观看| 久久久精品国产一区二区| 91免费高清视频| 日韩网站免费观看高清| 韩国美女主播一区| 91久久久久久久一区二区| 欧美性jizz18性欧美| 裸体女人亚洲精品一区| 麻豆国产精品va在线观看不卡| 亚洲欧美日韩精品久久| 98视频在线噜噜噜国产| 亚洲国产毛片完整版| 伊人一区二区三区久久精品| 国产亚洲精品综合一区91| 亚洲一区二区中文字幕| 全亚洲最色的网站在线观看| 国产精品视频区1| 亚洲欧美日韩爽爽影院| 色妞欧美日韩在线| 欧美日韩在线免费观看| 国产精品观看在线亚洲人成网| 欧美性xxxxx极品| 精品无人国产偷自产在线| 日韩在线视频一区| 色播久久人人爽人人爽人人片视av| 97国产成人精品视频| 欧美一二三视频| 国产视频久久网| 国产午夜精品美女视频明星a级| 亚洲成人av在线| 成人自拍性视频| 国产v综合v亚洲欧美久久| 久久91精品国产| 亚洲国产又黄又爽女人高潮的| 国产视频在线一区二区| 2019中文字幕免费视频| 国产欧美日韩中文| 国产精品一区二区三| 成人a级免费视频| 欧美日韩国产一区二区| 国产91ⅴ在线精品免费观看| 国产mv久久久| 亚洲娇小xxxx欧美娇小| 2018中文字幕一区二区三区| 久久综合久久八八| 亚洲美女久久久| 91亚洲一区精品| 成人av番号网|