需求
搭建网站,使得
外网
能够访问到本地实验室主机
.
NAT: 网络地址转换 导致外网不能直接对本地局域网内的主机进行直接访问。
条件
公网IP (购买云服务器(华为云、阿里云、腾讯云等))
前提
云服务器要设置为SSH密钥登录 本地执行
ssh-gen
和ssh-copy-id 云服务器user@ip
本地、云服务器的防火墙对应端口要打开。云服务器还要在官方网站上的安全组添加对应的端口。
实现步骤
在下文中云服务器的端口称为
portA
. 本地实验室主机的端口称为portB
。
-
本地实验室主机端:
运行以下代码:
ssh -Nf -R 0.0.0.0:port:127.0.0.1:portB username@ip
-R
表示远程端口转发
-N
不执行远程命令,只进行数据转发
-f
后台运行
0.0.0.0
代表网络上所有的主机,此处可以省略
127.0.0.1
可以用localhost替代。
username@ip
代表着云服务器上的用户名和云服务器的ip地址。 -
云服务器端:
使用
sudo vim /etc/ssh/sshd_config
命令修改sshd_config
文件
取消文件中GatewayPorts
的注释,并将no
换为yes
使用systemctl restart sshd
来重启服务
其他
完成后,使用
netstat -anp | grep portA
查看
使用telnet ip port
结合 server 程序来确认内网穿透成功。
在云服务器(公网ip)使用
nginx
反向代理监听外部的80端口的请求,并将请求转发给内网穿透的端口,可以实现端口的隐藏。