準備
一台處于廣域網中的vps (ubuntu系統),vps安裝ssh,區域網路計算機安裝ssh
開始
1.修改vps檔案
- 修改vps檔案
,在第一行添加代碼/etc/ssh/sshd_config
GatewayPorts yes
- 開啟端口,比如開啟6666端口
-
檢視目前端口是否被占用
lsof -i:6666
如果被占用的話可以殺死程序
kill 程序号
2.區域網路主機連入
ssh -fNR 6666:localhost:80 root@vps的ip
輸入vps登陸密碼。完成。
3. 通路
現在通路vps的6666端口,就相當于通路區域網路内計算機的80端口
4. 區域網路計算機掉線
如果區域網路計算機掉線,vps會等待一定的時間,如果在這個時間段内區域網路計算機可以上網了,就恢複連接配接;如果超過這個時間段,vps就自動中斷這條服務。具體戳 ssh幾個逾時參數
ssh 隧道代理轉發
ssh 有三個強大的端口轉發指令,分别是本地轉發、遠端轉發、動态轉發。
本地通路127.0.0.1:port1就是host:port2(用的更多)
ssh -CfNg -L port1:127.0.0.1:port2 user@host #本地轉發
通路host:port2就是通路127.0.0.1:port1
ssh -CfNg -R port2:127.0.0.1:port1 user@host #遠端轉發
可以将dmz_host的hostport端口通過remote_ip轉發到本地的port端口
ssh -qTfnN -L port:dmz_host:hostport -l user remote_ip #正向隧道,監聽本地port
可以将dmz_host的hostport端口轉發到remote_ip的port端口
ssh -qTfnN -R port:dmz_host:hostport -l user remote_ip #反向隧道,用于内網穿透防火牆限制之類
socket代理:
ssh -qTfnN -D port remotehost
參數詳解:
-q Quiet mode. 安靜模式
-T Disable pseudo-tty allocation. 不占用 shell 了
-f Requests ssh to go to background just before command execution. 背景運作,并推薦加上 -n 參數
-N Do not execute a remote command. 不執行遠端指令,端口轉發就用它了
-L port:host:hostport
将本地機(客戶機)的某個端口轉發到遠端指定機器的指定端口. 工作原理是這樣的, 本地機器上配置設定了一個 socket 偵聽 port 端口, 一旦這個端口上有了連接配接, 該連接配接就經過安全通道轉發出去, 同時遠端主機和 host 的 hostport 端口建立連接配接. 可以在配置檔案中指定端口的轉發. 隻有 root 才能轉發特權端口. IPv6 位址用另一種格式說明: port/host/hostport
-R port:host:hostport
将遠端主機(伺服器)的某個端口轉發到本地端指定機器的指定端口. 工作原理是這樣的, 遠端主機上配置設定了一個 socket 偵聽 port 端口, 一旦這個端口上有了連接配接, 該連接配接就經過安全通道轉向出去, 同時本地主機和 host 的 hostport 端口建立連接配接. 可以在配置檔案中指定端口的轉發. 隻有用 root 登入遠端主機才能轉發特權端口. IPv6 位址用另一種格式說明: port/host/hostport
-D port
指定一個本地機器 “動态的’’ 應用程式端口轉發. 工作原理是這樣的, 本地機器上配置設定了一個 socket 偵聽 port 端口, 一旦這個端口上有了連接配接, 該連接配接就經過安全通道轉發出去, 根據應用程式的協定可以判斷出遠端主機将和哪裡連接配接. 目前支援 SOCKS協定, 将充當SOCKS伺服器. 隻有 root 才能轉發特權端口. 可以在配置檔案中指定動态端口的轉發.
1 ssh 本地轉發
遠端管理伺服器上的 mysql,mysql 不能直接 root 遠端登陸。這時候就可以通過本地轉發,通過 ssh 将伺服器的 3306 端口轉發到本地 1234 端口
ssh -CfNg -L 1234:27.0.0.1:3306 root@vps的ip
2 ssh 遠端轉發
内網的伺服器,外網不能直接通路,使用遠端轉發,将内網的伺服器端口轉發到外網端口。這時候通路外網的端口,就通路到了内網的端口。
ssh -CfNg -R 81:127.0.0.1:80 [email protected]
現在在 192.168.153.142 通路 127.0.0.1:81 就是通路内網的伺服器的 80 端口。
3 ssh 動态轉發 socks 代理
把遠端主機設定成代理,來代理通路不能通路的資源。在地機器上配置設定了一個監聽端口, 一旦這個端口上有了連接配接, 該連接配接就經過 ssh 隧道轉發出去, 根據應用程式的協定可以判斷出遠端主機将和哪裡連接配接。
ssh -qTfnN -D 1080 root@vps的ip
參考:http://www.zerokeeper.com/experience/network-port-forwarding-and-penetration.html