一、穿透原理
SSH內網穿透是指通過SSH協議將公網和內網相連,從而在公網上訪問內網的設備或服務。SSH是基於TCP協議的一種安全的遠程登錄協議,其通過加密機制保證遠程連接的安全性。SSH內網穿透的原理是,在內網中啟動一個SSH終端,並通過埠轉發,將內網服務映射到外部網路中,使得公網用戶可以訪問到內網的設備或服務。
二、基本實現過程
SSH內網穿透的基本實現過程如下:
1. 內網設備啟動SSH服務,並在防火牆中開放SSH服務的埠。 2. 在公網設備上啟動SSH客戶端,並建立到內網設備的SSH連接。 3. 在SSH連接中設置埠轉發規則,將內網服務映射到公網上。 4. 在公網中使用映射的埠訪問內網服務。
三、常用工具
以下是常用的SSH內網穿透工具:
1. Ngrok(https://ngrok.com):功能強大,支持多協議穿透。 2. FRP(https://github.com/fatedier/frp):開源免費,支持TCP/UDP/WebSocket穿透。 3. SSHuttle(https://github.com/sshuttle/sshuttle):比較靈活,可以通過SSH通道路由所有流量。 4. Plink(https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html):PuTTY中的一個命令行工具,可以用來設置SSH隧道。
四、Ngrok實例
Ngrok是一款功能強大的內網穿透工具,支持多協議穿透,這裡我們以HTTP協議為例,介紹其使用方法。
1. 首先在https://ngrok.com/ 上下載對應平台的ngrok可執行文件,並解壓。
$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip $ unzip ngrok-stable-linux-amd64.zip
2. 啟動ngrok,並指定需要映射的服務埠。
$ ./ngrok http 80
3. 查看ngrok生成的隧道地址,即可通過該地址訪問內網服務。
Forwarding http://d8d8e1c8.ngrok.io -> localhost:80 Web Interface http://127.0.0.1:4040 # Conn 0 Avg Conn Time 0.00ms
五、SSHuttle實例
SSHuttle是一款比較靈活的內網穿透工具,可以通過SSH通道路由所有流量,這裡我們以路由所有流量的方式讓公網用戶訪問內網的WEB服務為例。
1. 在公網設備上安裝SSHuttle。
$ sudo apt-get install sshuttle
2. 使用SSHuttle建立到內網設備的SSH連接,並路由內網所有流量。
$ sshuttle -r user@192.168.1.100 0/0
3. 在公網中通過內網IP和埠訪問WEB服務。
http://192.168.1.100:80
六、FRP實例
FRP是一款功能強大的內網穿透工具,支持TCP/UDP/WebSocket穿透,這裡我們以TCP協議為例,介紹其使用方法。
1. 在內網設備上安裝FRP伺服器端,並配置客戶端連接。
$ wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz $ tar -xzvf frp_0.33.0_linux_amd64.tar.gz $ cd frp_0.33.0_linux_amd64/ $ cp frps /usr/local/bin/ $ frps -c frps.ini
2. 在公網設備上安裝FRP客戶端,並配置轉發規則。
$ wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz $ tar -xzvf frp_0.33.0_linux_amd64.tar.gz $ cd frp_0.33.0_linux_amd64/ $ cp frpc /usr/local/bin/ $ frpc -c frpc.ini
3. 在公網中通過FRP分配的地址和埠訪問內網服務。
http://xxx.xxx.xxx.xxx:xxxx
七、結語
SSH內網穿透是一種非常有用的網路技巧,可以方便地實現公網和內網的互通,開發中也會經常使用到該技術。通過本文的介紹,希望讀者們對SSH內網穿透有更深入的了解,並能夠靈活運用到實際開發中。
原創文章,作者:OVVK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/146511.html