SSH端口轉發(SSH port forwarding)是一種利用 SSH 協議來建立安全通信通道並將網路流量從一個端口轉發到另一個端口的技術。它可以用於加密和保護數據傳輸,以及實現不同網路應用之間的連接。
SSH端口轉發有三種主要類型:
Local Port Forwarding
假設有三台主機.18(主機A)、.70(主機B)、.24(主機C),如果想讓主機A:80連到主機C:80,但防火牆只開放 Port 22,而且主機A無法直接連到主機C。就可以利用 Local Port Forwarding 方式讓 主機A:80 連到主機C:80。
.18(主機A)sudo ssh administrator@192.168.0.70 -L 80:192.168.0.24:80
成功登入了
.18(主機A)的連線狀況
可以看到 主機A 開了 Port 80,遠端連到 主機B 的 Port 22。
.70(主機B)的連線狀況
Remote Port Forwarding
先在 .70(主機B) 開啟 GatewayPorts 的設定
不然沒法讓人家連 8008 portsudo nano /etc/ssh/sshd_config
重啟ssh服務sudo service ssh restart
以下指令的結果,只要連上 .70:8008(主機B),就可以連上.24:80(主機C)。
.18(主機A)ssh administrator@192.168.0.70 -R *:8008:192.169.0.24:80
.18(主機A)的連線狀況
可觀察到開了兩條連線
.70(主機B)的連線狀況
也只開了兩條連線
Dynamic Port Forwarding
以下指令的結果,只要連至.18:9050(主機A)的網路流量都可以透過.70(主機B)轉發出去。ssh administrator@192.168.0.70 -CD 9050
-C
:這個選項啟用了SSH壓縮,以減少資料傳輸時的頻寬使用。 它可以提高資料傳輸的效率。-D 9050
:這是配置動態連接埠轉送的部分。
18(主機A)的連線狀況netstat -antp
PS. 在 DAY12 寫的 ProxyChains 實現應用代理 也是一種 Dynamic Port Forwarding。