SSH客戶機連線到安全Shell伺服器,該伺服器允許您像坐在另一臺計算機前一樣執行終端命令。但是SSH客戶機還允許您在本地系統和遠端SSH伺服器之間“隧道”埠。
有三種不同型別的SSH隧道,它們都用於不同的目的。每種方法都涉及使用SSH伺服器將流量從一個網路埠重定向到另一個網路埠。通訊量是透過加密的SSH連線傳送的,因此不能在傳輸過程中對其進行監視或修改。
您可以使用Linux、macOS和其他類似UNIX的作業系統上包含的ssh命令來實現這一點。在不包含內建ssh命令的Windows上,我們建議使用免費工具PuTTY來連線ssh伺服器。它也支援SSH隧道。
“本地埠轉發”允許您訪問不暴露於Internet的本地網路資源。例如,假設您想從家中訪問辦公室的資料庫伺服器。出於安全原因,該資料庫伺服器僅配置為接受來自本地辦公網路的連線。但是,如果您可以訪問辦公室的SSH伺服器,並且該SSH伺服器允許從辦公室網路外部進行連線,那麼您可以從家連線到該SSH伺服器,並像在辦公室一樣訪問資料庫伺服器。通常是這樣,因為保護單個SSH伺服器免受攻擊比保護各種不同的網路資源更容易。
為此,您需要與SSH伺服器建立SSH連線,並告訴客戶機將來自本地PC的特定埠(例如,埠1234)的通訊轉發到資料庫伺服器的地址及其在辦公網路上的埠。因此,當您嘗試訪問位於埠1234的資料庫伺服器時,您當前的PC“localhost”會自動透過SSH連線“隧道”該流量併發送到資料庫伺服器。SSH伺服器位於中間,來回轉發通訊量。您可以使用任何命令列或圖形工具訪問資料庫伺服器,就像它在本地PC上執行一樣。
要使用本地轉發,請正常連線到SSH伺服器,但也要提供-L引數。語法是:
ssh -L local_port:remote_address:remote_port [email protected]例如,假設您辦公室的資料庫伺服器位於辦公網路上的192.168.1.111。您可以訪問辦公室的SSH伺服器ssh.youroffice.com,並且您在SSH伺服器上的使用者帳戶是bob。在這種情況下,您的命令如下所示:
ssh -L 8888:192.168.1.111:1234 [email protected]執行該命令後,您就可以訪問localhost上8888埠的資料庫伺服器。因此,如果資料庫伺服器提供web訪問,您可以http://localhost:8888以訪問您的web瀏覽器。如果您有一個需要資料庫網路地址的命令列工具,您可以將它指向本地主機:8888。傳送到您電腦8888埠的所有流量都將透過隧道傳輸到辦公網路上的192.168.1.111:1234。
如果要連線到與SSH伺服器本身執行在同一系統上的伺服器應用程式,則會有點混亂。例如,假設您的辦公計算機上有一個SSH伺服器在埠22處執行,但在同一系統的同一地址上也有一個數據庫伺服器在埠1234處執行。您想從家訪問資料庫伺服器,但系統只接受埠22上的SSH連線,其防火牆不允許任何其他外部連線。
在這種情況下,可以執行如下命令:
ssh -L 8888:localhost:1234 [email protected]當您嘗試訪問當前PC上8888埠的資料庫伺服器時,流量將透過SSH連線傳送。當它到達執行SSH伺服器的系統時,SSH伺服器將把它傳送到“localhost”上的埠1234,這是執行SSH伺服器本身的同一臺PC。因此,從遠端伺服器的角度來看,上面命令中的“localhost”意味著“localhost”。
要在Windows上的PuTTY應用程式中執行此操作,請選擇Connection>SSH>Tunnels。選擇“本地”選項。對於“源埠”,輸入本地埠。對於“目的地”,請在“遠端”窗體中輸入目的地地址和埠_地址:遠端埠。
例如,如果您想像上面那樣設定相同的SSH隧道,您可以輸入8888作為源埠,然後本地主機:1234 as目的地。單擊“新增”,然後單擊“開啟”開啟SSH連線。當然,在連線之前,您還需要在主“Session”螢幕上輸入SSH伺服器本身的地址和埠。
“遠端埠轉發”與本地轉發相反,使用頻率不高。它允許您在SSH伺服器上使用本地PC上的資源。例如,假設您在坐在前面的本地PC上執行web伺服器。但是你的電腦在防火牆後面,不允許進入伺服器軟體的流量。
假設可以訪問遠端SSH伺服器,則可以連線到該SSH伺服器並使用遠端埠轉發。您的SSH客戶機將告訴伺服器轉發一個特定的埠,比如SSH伺服器上的埠1234到當前PC或本地網路上的特定地址和埠。當有人訪問SSH伺服器上的1234埠時,該通訊量將透過SSH連線自動“隧道化”。任何可以訪問SSH伺服器的人都可以訪問執行在你電腦上的web伺服器。這是一種有效的穿越防火牆的方法。
要使用遠端轉發,請使用帶有-R引數的ssh命令。語法與本地轉發基本相同:
ssh -R remote_port:local_address:local_port [email protected]假設您希望使一個伺服器應用程式在本地PC上的埠1234上偵聽,並在遠端SSH伺服器上的埠8888上可用。SSH伺服器的地址是ssh.youroffice.comSSH伺服器上的使用者名稱是bob。您可以執行以下命令:
ssh -R 8888:localhost:1234 [email protected]然後,有人可以在8888埠連線到SSH伺服器,並且該連線將透過隧道傳輸到您建立連線的本地PC上在1234埠執行的伺服器應用程式。
要在Windows上的PuTTY中執行此操作,請選擇Connection>SSH>Tunnels。選擇“遠端”選項。對於“源埠”,輸入遠端埠。對於“目的地”,請以本地格式輸入目的地地址和埠_地址:本地港口。
例如,如果您想設定上面的示例,您可以輸入8888作為源埠,然後本地主機:1234 as目的地。單擊“新增”,然後單擊“開啟”開啟SSH連線。當然,在連線之前,您還需要在主“Session”螢幕上輸入SSH伺服器本身的地址和埠。
然後人們可以連線到SSH伺服器上的8888埠,他們的通訊量將透過隧道傳輸到本地系統上的1234埠。
預設情況下,遠端SSH伺服器將只偵聽來自同一主機的連線。換句話說,只有與SSH伺服器本身在同一系統上的人才能連線。這是出於安全考慮。如果要覆蓋此行為,則需要在遠端SSH伺服器上的sshd\u config中啟用“GatewayPorts”選項。
相關:VPN和代理有什麼區別?
還有“動態埠轉發”,其工作原理類似於代理或VPN。SSH客戶機將建立一個SOCKS代理,您可以配置要使用的應用程式。所有透過代理髮送的流量都將透過SSH伺服器傳送。這類似於本地轉發,它將本地通訊傳送到PC上的特定埠,並透過SSH連線將其傳送到遠端位置。
相關:為什麼使用公共Wi-Fi網路會很危險,即使訪問加密的網站也是如此
例如,假設您使用的是公共Wi-Fi網路。你想安全地瀏覽而不被窺探。如果您可以訪問家中的SSH伺服器,則可以連線到它並使用動態埠轉發。SSH客戶端將在您的PC上建立一個SOCKS代理。傳送到該代理的所有流量都將透過SSH伺服器連線傳送。監控公共Wi-Fi網路的人將無法監控您的瀏覽或審查您可以訪問的網站。從你訪問的任何網站的角度來看,你都會覺得自己就像坐在家裡的電腦前。當然,這也意味著您可以在美國境外使用此技巧訪問僅限美國的網站,前提是您可以訪問美國境內的SSH伺服器。
另一個例子是,您可能希望訪問家庭網路上的媒體伺服器應用程式。出於安全原因,您可能只有一個SSH伺服器暴露在Internet上。不允許從Internet到媒體伺服器應用程式的傳入連線。您可以設定動態埠轉發,將web瀏覽器配置為使用SOCKS代理,然後透過web瀏覽器訪問家庭網路上執行的伺服器,就像您坐在家中的SSH系統前面一樣。例如,如果您的媒體伺服器位於家庭網路上的埠192.168.1.123,您可以使用SOCKS代理將地址192.168.1.123**到任何應用程式中,這樣您就可以像在家庭網路上一樣訪問媒體伺服器。
要使用動態轉發,請使用-D引數執行ssh命令,如下所示:
ssh -D local_port [email protected]例如,假設您可以訪問ssh.yourhome.comSSH伺服器上的使用者名稱是bob。您想使用動態轉發在當前電腦的8888埠開啟SOCKS代理。您需要執行以下命令:
ssh -D 8888 [email protected]然後可以配置web瀏覽器或其他應用程式以使用本地IP地址(127.0.01)和埠8888。來自該應用程式的所有流量都將透過隧道重定向。
要在Windows上的PuTTY中執行此操作,請選擇Connection>SSH>Tunnels。選擇“動態”選項。對於“源埠”,輸入本地埠。
例如,如果您想在8888埠上建立一個SOCKS代理,您應該輸入8888作為源埠。單擊“新增”,然後單擊“開啟”開啟SSH連線。當然,在連線之前,您還需要在主“Session”螢幕上輸入SSH伺服器本身的地址和埠。
然後可以配置一個應用程式來訪問本地PC上的SOCKS代理(即IP地址127.0.0.1,指向本地PC)並指定正確的埠。
相關:如何在Firefox中配置代理伺服器
例如,您可以將Firefox配置為使用SOCKS代理。這特別有用,因為Firefox可以有自己的代理設定,而不必使用系統範圍的代理設定。Firefox將透過SSH隧道傳送流量,而其他應用程式將正常使用您的Internet連線。
在Firefox中執行此操作時,請選擇“手動代理配置”,在SOCKS主機框中輸入“127.0.0.1”,並在“埠”框中輸入動態埠。將HTTP代理、SSL代理和FTP代理框留空。
只要您開啟SSH會話連線,隧道就會保持活動和開啟狀態。當您結束SSH會話並斷開與伺服器的連線時,隧道也將關閉。只需重新連線相應的命令(或PuTTY中的相應選項)即可重新開啟隧道。
... 安裝SSH後,請確保將SSH伺服器設定為使用金鑰而不是密碼進行身份驗證。確保您的堡壘主機的IP與上面的埠轉發規則中設定的IP相同。 ...
...進一步的設定。只需在20個受支援的國家/地區中選擇一個伺服器,就可以開始了。您甚至可以使用自動連線功能來選擇效能最好的伺服器。 ...
...透過向任何人**VPN接入來賺錢。他們經常在許多國家建立伺服器。人們被吸引到這些服務是因為各種各樣的原因,這些原因與連線到僱主的基礎設施無關。 ...
... 當然,改變你的DNS伺服器或使用VPN可以有額外的好處以外的世界地理封鎖。然而,許多使用者不會在意這些好處。 ...
... 你還需要考慮瀏覽速度。VPN伺服器的執行和管理成本很高。如果你使用的是免費服務,很可能會被其他使用者超負荷使用。優質提供商將大量收入再投資於伺服器和頻寬。 ...
... 或者您可以嘗試將一個樹莓Pi轉換成一個web伺服器,它能夠執行基本的web伺服器軟體。最棒的是,設定起來很簡單。 ...
...線上隱私,你很有可能使用VPN連線。如果您直接透過ISP的伺服器訪問web,它們提供了一層無法獲得的隱私。 ...
... 使用者可以從94多個國家/地區的148多個ExpressVPN伺服器中進行選擇。您可以隨時自由切換伺服器。當您找到最適合您的位置時,請確保您喜歡這些位置,以便以後更快地訪問。 ...
... SSH使用上述兩種加密型別在客戶機-伺服器模型中建立安全連線。當客戶機試圖建立與伺服器的連線時,每一方都會通訊其加密協議。 ...
...用隧道。 所以我們得到了“反向SSH隧道”這個名字 它是如何工作的? 反向SSH隧道依賴於遠端計算機使用已建立的連線來偵聽來自本地計算機的新連線請求。 遠端計算機監聽本地計算機上的網路埠。如果它檢測到對該埠的SSH請...