如果你在不同的網絡上連接不同的 Linux 設備,你需要將它們暴露在公共互聯網上。這可能會使您的系統和文件面臨風險。因此,SSH 隧道用於以快速且安全的方式將數據從源計算機傳輸到客戶端計算機,反之亦然。
SSH 隧道是一種在服務器機器和客戶端機器之間創建安全、加密的 SSH 連接的方法,您可以通過該連接傳輸數據或中繼服務。在今天的文章中,我將向您展示如何設置 SSH 隧道並通過 SSH 隧道安全地路由流量。
什麼是 SSH 隧道?
SSH 隧道是一種通過加密通道發送未加密流量或數據的方法。簡而言之,它是一條以安全方式將數據從一個位置傳輸到另一個位置的隧道。除了文件傳輸之外,您還可以使用 SSH 隧道訪問內網服務並實現跨防火牆的 VPN。
SSH 隧道,也稱為 SSH 隧道,是一種使用加密協議 (FTP) 傳輸數據、繞過防火牆和訪問受地理限制的內容的簡單有效的方法。
SSH 端口轉發的三種類型:
- 本地端口轉發
- 遠程端口轉發
- 動態端口轉發
本地轉賬
本地轉發是一種將端口從客戶端機器(本地 SSH 客戶端)轉發到遠程機器(SSH 服務器),然後將連接轉發到目標機器上的另一個端口的方法。
SSH 客戶端檢查特定端口上的連接,當它收到連接請求時,它將連接隧道連接到遠程 SSH 服務器上的特定端口。然後服務器連接到配置端口上的另一台目標機器。
它主要用於從外部連接到內部網絡上的遠程服務,例如數據庫。它還用於通過 Internet 和跳轉服務器進行遠程文件共享。
如何設置本地端口轉發?
例如,防火牆將其限制為在遠程服務器上的端口 3000 上運行的應用程序。然後轉發本地端口(即8080)以在本地訪問應用程序。
這個 -L
用於配置本地端口轉發
ssh [email protected] -L 8080:server1.example.com:3000
還
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION:DESTINATION_PORT [[email protected]]SSH_SERVER
- [LOCAL_IP:]本地端口 – 本地機器端口號和 IP 地址。 您可以使用任何大於 1024 的端口號。
- 目的地:DESTINATION_PORT – 目標機器端口和 IP 地址或主機名。
- [[email protected]]SERVER_IP – 遠程 ssh 用戶的用戶名和服務器 IP 地址。
這個 -f
告訴 ssh 在後台運行。
ssh -f -N [email protected] -L 8080:server1.example.com:3000
什麼時候 -N
指示不執行遠程命令。 [you will not get a shell in this case.]
ssh -N [email protected] -L 8080:server1.example.com:3000
現在,您可以使用 localhost:8080 來訪問遠程應用程序,而不是使用地址 server.example.com:3000 在本地計算機上打開瀏覽器來訪問遠程應用程序。
遠程傳輸
遠程端口轉發與本地端口轉發相反,它允許您從遠程計算機連接到本地計算機。 SSH 默認不支持遠程端口轉發。因此,它應該在 ssh 配置文件中啟用。
以編輯模式打開 ssh 配置文件
sudo vim /etc/ssh/sshd_config
搜索 GatewayPorts 並將其設置為 yes。
GatewayPorts yes
保存更改,退出編輯模式,然後重新啟動服務器。
sudo systemctl restart sshd
現在啟用了遠程端口轉發。 在 Open SSH 中,使用 -R 命令設置遠程端口轉發。
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT [[email protected]]SSH_SERVER
- [REMOTE:]遠程端口 – 遠程 SSH 服務器的 IP 地址和端口號。
- 目的地:DESTINATION_PORT – 目標機器的主機名和 IP 地址。
- [[email protected]]SERVER_IP – 遠程 SSH 用戶名和 IP 地址。
例如:
ssh -R 8080:127.0.0.1:3000 -N -f [email protected]
SSH 服務器偵聽端口 8080 並將所有流量從本地計算機 8080 隧道傳輸到端口 3000。
或者,您可以使用以下命令將遠程計算機上的端口 5000 轉發到本地計算機上的端口 3000:
ssh -f -N [email protected] -R 5000:localhost:3000
遠程端口轉發主要用於允許某人從外部訪問內部服務。
動態端口轉發
第三種也是最後一種端口轉發是動態端口轉發。本地端口轉發和遠程端口轉發允許您在單個端口上建立隧道和通信,而動態端口轉發允許您在不同端口上運行和通信。
在本地計算機上創建一個套接字作為 SOCKS 代理服務器。或者,您可以將本地計算機設置為 SOCKS 代理服務器,並默認監聽端口 1080。當服務器連接到這個端口時,它被轉發到遠程機器,並通過動態端口轉發到動態機器。
什麼是襪子?
這是一個互聯網協議,它定義了客戶端計算機如何通過代理連接到服務器。
您可以使用 -D 選項啟用動態端口轉發。讓我們通過一個例子來理解端口轉發——
ssh -D [LOCAL_IP:]LOCAL_PORT [[email protected]]SSH_SERVER
- [LOCAL_IP:]本地端口 – 本地機器 IP 地址和端口號。
- [[email protected]]SERVER_IP – 遠程服務器的 IP 地址和用戶名。
或者,此命令啟動 SOCKS 代理並允許您連接到遠程主機。
ssh -f -N -D 1080 [email protected]
結論是
SSH 隧道是一種通過加密隧道發送未加密數據的便捷方式。根據您的需要,有三個選項可供選擇。