起因
手机安装了termux,但是使用电脑并不能方便的访问手机内容,每次需要配置共享wifi等方式获取互通IP,比较繁琐。(手机IP貌似不是公网IP?)故探索如何在公网访问到手机搭建的呢容。
方案
起初使用了cpolar,但免费账户使用随机域名,且动态生成port号(土豪的话,cpolar确实好用)。目测还是会时不时更新域名或者port号。对于有强迫症的我,估计会疯。后又尝试了几个其他免费的方案,甚至想到去租云服务器,但查看了价格后。。。就没有然后了。
期间了解到,这种需求需要使用到一台具有公网IP的服务器,且需要使用内网透传。就开始学习如何做内网穿透。(家中已有公网IP的服务器,我只要解决内网穿透就可)。后查阅资料,发现ssh具备端口转发功能。(可怕,技术经发展到想要什么基本都可以实现的地步)
ssh端口转发方案如下
-
比如有如下角色:
-
公网IP服务器:pub_IP_server
手机:phone
在手机执行:
ssh -R :port_server:localhost:port_phone name@pub_IP_server
-
其中:
-
port_server:通过公网服务器的该端口号转发
localhost:本地IP,127.0.0.1
port_phone:手机提供服务的端口号(比如termux下ssh端口号为8022)
name:在公网服务器上的用户名
pu_IP_server:服务器地址,可以是域名,也可以是IP地址
即该指令实现:访问公网服务器的port_server端口,会转发到手机localhost端口port_phone上。
注意需要在sshd_config中配置GatewayPorts yes