废话连篇代码讲解:
1 | ssh -gfnNTR x.x.x.x:5000:y.y.y.y:22 [email protected] -o ServerAliveInterval=300 |
看下上面代码的几个参数含义
x.x.x.x 可以是你公网服务器的IP,也可以是127.0.0.1、再或者localhost代替。
5000 表示你公网服务器暴露的端口,只要访问这个端口,都会转发给你的内网设备。
y.y.y.y是你需要做内网穿透设备的IP,也可以是127.0.0.1、再或者localhost代替。
22 内网服务器暴露的端口,所有访问公网暴露的端口都会转发到此处。
root 表示你的公网服务器中的root账户。
z.z.z.z是公网服务器的静态IP,这里要注意了:如果你的公网IP做了域名映射,可以直接是[email protected]。如果没有就直接是[email protected]。
正儿八经的实验
首先要在公网服务器做如下配置:1
sudo vi /etc/ssh/sshd_config
在最后一行添加 GatewayPorts yes 保存退出
执行重启ssh服务命令1
service ssh restart
然后在内网服务器执行下面命令:1
ssh -gfnNTR 123.45.56.78:5000:localhost:22 [email protected] -o ServerAliveInterval=300
回车输入你服务器登录密码即可完成内网穿透
验证是否成功的方法,找另外一台电脑输入:1
ssh 内网主机用户名@123.45.56.78 -p 5000
回车输入内网主机登录密码即可
内网穿透 域名映射
举个栗子:现有内网项目端口8080,域名my.abc.com 要求通过域名可以访问内网8080端口的项目,上代码!内网要映射项目的机器执行1
ssh -gfnNTR localhost:50001:localhost:8080 [email protected] -o ServerAliveInterval=300
域名:my.abc.com 映射到公网ip 123.45.56.78
公网服务器配置nginx1
docker run --name my-nginx -p 80:80 -v /home/nginx/conf.d:/etc/nginx/conf.d -d nginx
my-nginx 容器名字
/home/nginx/conf.d 宿主机的nginx配置文件存放目录自行更改
在/home/nginx/conf.d 文件夹下创建文件:abc.conf 内容如下:
1 | ## set web-application proxy |
重启nginx服务1
docker restart my-nginx
访问域名测试收工。
ssh隧道代理上网
1 | ssh -qTNf -D 127.0.0.1:12345 [email protected] |
x.x.x.x 代表公网ip
-q表示该命令进入安静模式
-T是指该命令不占用shell
-N是指该命令不执行远程命令
-f是指该命令在后台运行
-D是该命令重要参数,他的后面跟着socks5服务器的地址与端口
本机配置代理127.0.0.1 端口:12345 就可以了。。。谷歌浏览器推荐使用插件:proxy-switchyomega