ssh tunnel 反向代理(內網穿透)

ssh tunnel 反向代理(內網穿透)

  • 通過外網主機的特定端口訪問內網主機特定端口的網絡服務

設備信息

  • 47.93.199.97 外網代理主機,用來代理內網主機的網絡服務。不能訪問192.168.10.2內網主機
  • 192.168.10.2 內網主機,可以通過ssh客戶端登錄外網47.93.199.97主機

示例場景

  • 通過ssh [email protected] -p 2222的方式登錄192.168.10.2主機(通過47.93.199.97的2222端口,訪問192.168.10.2的22端口的ssh服務)
  • 通過47.93.199.97的23306端口訪問192.168.102主機的3306端口的mysql服務

環境準備

  • 使用root分別能夠登錄 47.93.199.97, 192.168.10.2(非root請使用sudo切換root權限)

外網代理主機(47.93.199.97)

  • 允許代理的服務綁定到0.0.0.0地址,允許其他主機遠程訪問服務端口
  • 編輯/etc/ssh/sshd_config, 增加或者設置GatewayPorts配置
  • 需要重啓ssh服務
GatewayPorts yes
  • 保持代理服務端與客戶端長時間有效
  • 編輯/etc/ssh/sshd_config, 增加或者設置ClientAliveInterval,ClientAliveCountMax 配置
  • 需要重啓ssh服務
ClientAliveInterval 60     #服務端主動向客戶端請求響應的間隔
ClientAliveCountMax 10     #服務器發出請求後客戶端沒有響應的次數達到一定值就自動斷開
  • 重啓ssh服務
service ssh restart

內網被代理主機(192.168.10.2)

  • 保持客戶端與代理服務端長時間有效
  • 編輯/etc/ssh/ssh_config(服務端的配置文件sshd_config,注意區別),增加或設置TCPKeepAlive,ServerAliveInterval 配置
TCPKeepAlive yes         #保持與服務端的tcp連接
ServerAliveInterval 60   #客戶端主動向服務端請求響應的間隔

代理搭建

ssh代理服務

  • 在內網主機執行下面的指令,然後輸入密碼,即可完成代理服務搭建
ssh -NfR <remote binding host>:<remote bing port>:<local host>:<local port> <remote login user>@<remote host>
  • 在192.168.10.2內網主機執行以下指令,搭建ssh代理服務
ssh -NfR *:2222:127.0.0.1:22 [email protected]

mysql代理服務

  • 在192.168.10.2內網主機執行以下指令,搭建mysql代理服務。通過47.93.199.97的23306端口即可訪問內網主機192.168.10.2的3306端口的mysql服務
ssh -NfR *:23306:127.0.0.1:3306 [email protected]

Refs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章