此方法适用于在内网中有一台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端口。

Leave a Reply

Your email address will not be published. Required fields are marked *