在公网上访问内网服务器的方法,使用端口映射
此方法适用于在内网中有一台Linux服务器并购买了VPS的情况。尽管网站可以直接搭建在VPS上,但是有些情况下对磁盘容量的需求比较大,比如同时搭建云盘服务,购买VPS的磁盘容量价格较高,这时候就可以把服务放在内网环境,使用VPS的公网IP访问内网服务器。 使用的工具很普通,就是SSH,如果你是头一次听说,一定会感到惊讶,这个我们经常在用的工具竟然还能够做端口映射,在我知道之前用的是付费的第三方内网穿透服务。当然,也许你第一次使用SSH的时候就已经全面地了解过它。 为了区分内网与外网的两台主机,这里使用Server表示VPS,Client表示内网中的主机。默认情况下,SSH连接远程Linux主机后长时间没有操作会自动断线,可以修改SSH的配置文件,保证连接不自动中断。设置的数值可以按照个人意愿修改,具体意义可以在网上查到。 在Server上进行设置,编缉/etc/ssh/sshd_config,添加 GatewayPorts=yes ClientAliveInterval 30 ClientAliveCountMax 60 # 重启SSH服务端 service sshd restart 设置Client,编缉/etc/ssh/ssh_config,添加 ServerAliveInterval 20 ServerAliveCountMax 999 # 重启SSH客户端 service ssh restart 至此,Server与Client设置完毕,可以开始端口映射了。这里以映射80端口为例,在Client主机上运行: ssh -C -f -N -g -R 80:localhost:80 root@[VPS的IP地址] 输入VPS的root密码即可。 SSH的这几个选项的意义: -C:压缩数据传输。 -f :后台认证用户/密码,通常和-N连用,不用登录到远程主机。 -N :不执行脚本或命令,通常与-f连用。 -g :在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。 -L :本地端口:目标IP:目标端口 -R: 远程端口:目标IP:目标端口 到现在为止,如果内网主机上在80端口有web服务,则通过VPS的IP地址也能访问了。浏览器中输入VPS的IP地址即可,默认访问的就是80端口。