可以做内网穿透来实现,不用公网IP,也不用进入路由器配置。
在内网服务器上安装内网穿透工具,然后将内网端口映射到公网上,生成公网地址,实现公网访问内网服务器。
比如cpolar内网穿透,支持http/https/tcp协议,不限制流量,也可以免费使用。举例通过cpolar内网穿透ssh远程访问内网linux服务器:
免费注册cpolar账号linux安装cpolar客户端cpolar一键安装脚本:(国内用户)curl -L| sudo bash或短链接安装方式:(国外用户)curl -sL| sudo bash查看cpolar版本信息,如果正常显示,则安装成功cpolar versioncpolar进行token认证【如果您还没有cpolar账号,请去cpolar官网注册并登录后台获取认证token】
cpolar authtoken xxxxxxxxxxxxxxxxxx配置cpolar开机自启动sudo systemctl enable cpolar守护进程方式,启动cpolarsudo systemctl start cpolar查看cpolar守护进程状态sudo systemctl status cpolar如状态为active, 说明启动状态成功
cpolar会默认安装两个样例隧道,一个是Website隧道指向http 8080端口,一个是ssh隧道,指向tcp 22端口。
目录
3. 获取ssh隧道公网地址
浏览器访问:9200/,登录cpolar web UI管理界面。左侧仪表盘——在线隧道列表——获取ssh隧道公网地址
" data-caption="" data-size="normal" data-rawwidth="720" data-rawheight="300" class="origin_image zh-lightbox-thumb lazy" width="720" data-original="?source=1940ef5c" data-actualsrc="?source=1940ef5c">3. 公网ssh远程linux
在外网设备上执行命令,就可以ssh远程内网的linux
ssh linux@cpolar所生成的公网地址 -p XXXXX(cpolar生成的端口号)
两种方案:
(1)端口转发,比如Frp,即把B主机的某个端口P1,映射到A主机的端口P2上。这样就能使用A主机的ip访问B主机,即访问A主机的端口P2,就相对于访问B主机的端口P1。优点是访问方便,访问端使用公网ip访问,无需任何安装;缺点是每个端口都需要映射,对于不固定端口需求不方便,其次,B主机的端口暴露在公网下,不安全。
(2)虚拟局域网,比如Zerotier,将A主机与B主机都加入到虚拟局域网中,然后将A主机作为路由转发服务器(类似路由器),这样,在虚拟局域网中就能访问到B主机了。优点是使用方便,支持P2P,和局域网一样的使用体验,缺点是访问端需要额外安装客户端(虚拟网卡)。详情可参考文章
gezp:基于Zerotier的虚拟局域网(内网穿透方案)57 赞同 · 13 评论文章具体采用哪种方案,可根据实际需求选择。
根据你的描述,如果只需要ssh远程登陆内网主机的话,可能Frp更加方便一些,只需要映射22端口即可。