SSH隧道
SSH隧道(即SSH代理、端口轉發),接觸過Linux系統的都知道SSH,對於SSH隧道,如果之前沒接觸過,只知道這個概念、網上搜索這方面的資料的話,網上的資料把簡單的問題複雜化了,寫的很複雜很繁瑣。 主要還是理解映射二字。把本地端口映射到遠程機器端口,然後訪問遠程的端口就相當於訪問的本地端口,這就是遠程SSH隧道。把遠程機器的端口通過中間服務器映射到本地端口。然後訪問本地端口,就相當於訪問到了遠程的服務器端口,這就是本地SSH隧道。
建立SSH隧道命令
ssh -C -f -N -L listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -R listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -D listen_port user@Tunnel_Host
-L port:host:hostport #建立本地SSH隧道(本地客戶端建立監聽端口)
將本地機(客戶機)的某個端口轉發到遠端指定機器的指定端口.
-R port:host:hostport #建立遠程SSH隧道(隧道服務端建立監聽端口)
將遠程主機(服務器)的某個端口轉發到本地端指定機器的指定端口.
# 有本地映射肯定有遠程映射,就是把-L換成-R,這樣我們訪問遠程主機的端口就相當於訪問本地的端口,但感覺作用不大。
-D port
指定一個本地機器 “動態的’’ 應用程序端口轉發.
-C 壓縮數據傳輸。
-N Do not execute a shell or command.
不執行腳本或命令,僅僅做端口轉發。通常與-f連用。
-f Fork into background after authentication.
後臺認證用戶/密碼,不用登錄到遠程主機。
-L X:Y:Z的含義是,將IP爲Y的機器的Z端口通過中間服務器映射到本地機器的X端口。把其他遠程機器的端口通過中間服務器映射到本地端口上來。然後本地就能通過中間服務器訪問了遠程服務器了。
-R X:Y:Z 的含義就是把我們本地的Y機器的Z端口映射到遠程機器的X端口上。把本地端口映射到遠程機器的端口上去。然後遠程機器訪問X端口,就相當於訪問的是本地機器了。前提是,本地到遠程機器的網絡是通的,才能把本地的端口映射到遠程機器上去。
建立本地SSH隧道
在我們計劃建立一個本地SSH隧道之前,我們必須清楚下面這些數據:
1. 中間服務器d的IP地址
2. 要訪問服務器c的IP地址
3. 要訪問服務器c的端口
- 需要訪問234.234.234.234的FTP服務,也就是端口21
- 中間服務器是123.123.123.123
- -N 告訴SSH客戶端,這個連接不需要執行任何命令。僅僅做端口轉發
- -f 告訴SSH客戶端在後臺運行
- -L 做本地映射端口,被冒號分割的三個部分含義分別是最後一個參數是我們用來建立隧道的中間機器的IP地址(IP: 123.123.123.123)
- 需要使用的本地端口號
- 需要訪問的目標機器IP地址(IP: 234.234.234.234)
- 需要訪問的目標機器端口(端口: 21)
建立遠程SSH隧道
- 需要訪問內部機器的遠程機器的IP地址(這裏是123.123.123.123)
- 需要讓遠程機器能訪問的內部機器的IP地址(這裏因爲是想把本機映射出去,因此IP是127.0.0.1)
- 需要讓遠程機器能訪問的內部機器的端口號(端口:22)
- 遠程機器使用的端口(2222)
- 需要映射的內部機器的IP地址(127.0.0.1)
- 需要映射的內部機器的端口(22)
以上內容參考網上某位博客,忘了地址。不好意思。
end