应用场景:
现有inner_server、 online_server、 client 三台设备:
- inner_server在内网,可以访问公网,但是不能从公网直接访问。
- online_server在公网上
- client是办公电脑,无固定公网ip
想实现inner_server和client两台设备之间的互联,可以通过挖一条ssh隧道穿透内网为两台设备牵线搭桥。
相关技术blog:
http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html
http://linux.51yip.com/search/ssh
思路:
step1. 在inner_server上开启remote_forwarding,实现: inner_server<------connection------>online_server。
step2. 在online_server上开启local_forwarding,实现:client<------connection------>online_server
这样就实现了:client<------online_forwarding------>inner_server
配置:
// inner_server:
ssh -Np 8888 online_server
ssh -NT -f -R 12345:localhost:8888 online_server
// inner_server 通过8888端口连接 online_server,并让online_server监听自身的12345端口,有任何流量即转发到inner_server的22端口(online_server的ssh监听端口为8888)
// online_server:
ssh -NT -f -L *:55555:localhost:12345 localhost
// online_server 把任何连接到55555端口流量转发到自身的12345端口上
// client访问时:
ssh -Np 55555 online_server
// client 通过55555端口连接online_server,同时也打通了与inner_server的8888端口的连接
参数解释:
-f 后台运行
-C 允许压缩数据
-N 不执行任何命令
-R 将端口绑定到远程服务器,反向代理
-L 将端口绑定到本地客户端,正向代理
网友评论