需要有一台外网的linux服务器
内网机器执行
plink.exe -C -N -R 1234:localhost:80 root@remotehost
其中1234为在外网linux上开的端口,不过这个端口只能在linux外网服务器本地访问,80为内网web服务器端口。这条命令的作用是把本机(内网机器)的80端口的数据转发到外网linux机器的127.0.0.1:1234端口。
其实到这一步在外网linux服务器上就已经可以访问内网的80端口了,但只能是外网linux服务器本机访问,下面的步骤可以让所有用户都能访问到。
外网机器安装socat,执行
apt-get install socat
socat tcp-listen:80,reuseaddr,fork tcp:localhost:1234
其中80为linux本机开的对外端口,1234为内网连接传输数据的端口,本条命令的作用是把由ssh转发到本机(外网linux)1234端口的数据转发到0.0.0.0:80端口
这样访问外网linux服务器的80端口就相当于访问了内网web服务器的80端口。
linux系统下运行本地机链接VPS服务器
ssh -CNf -g -R 81:127.0.0.1:80 root@45.32.53.3 -p 22
VPS服务器要做端口转发
socat tcp-listen:8888,reuseaddr,fork tcp:localhost:81 &
最后穿透外网IP http://45.32.53.3:8888
外网有防火墙的要开启8888防火墙,尽量用大于1000的端口号,防止运营商封闭端口!
关闭程序
ps -ef | grep socat | grep -v grep | awk ‘{print $2}’ | sed -e “s/^/kill -9 /g” | sh