需求
因学习、开发需要,需要通过访问学校实验室的服务器(校园网内网服务器)。但是我目前不在学校,自然无法直接通过校园网访问服务器了。因此查阅互联网,找到一种基于内网穿透的远程访问解决方案。
解决方案
总的来说,我们还需要一台服务器做中转服务器,通过这台服务器跳转访问校内内网服务器。
- 中转服务器视作服务端(server)
- 内网服务器视作客户端(client)
租赁中转服务器
第一步,我们需要租一台中转服务器。这台服务器只需要运行一个后台程序即可,配置无所谓。这里推荐阿里云飞天计划免费租赁服务器三个月的活动(只有新账户才能试用一次)。
下载反向代理应用frp
frp是用于内网穿透的反向代理应用,非常有效、方便。下载地址为https://github.com/fatedier/frp/releases。
我这里下载的是frp_0.49.0_linux_amd64版本。下载到本地后解压缩,得到一系列配置文件。
配置中转服务器
将frps以及frps.ini放到该中转服务器上,运行nohup ./frps -c ./frps.ini &
。frps.ini文件内容如下:
[common]
bind_port = 7000
nohup表示将该进程一直在后台运行。注意文件目录关系,frps和frps.ini在同级目录下,且在该目录下运行该命令。
运行完毕命令后,这个进程就在7000端口运行了。还需要到服务器的配置界面,开放7000端口(放行),不然后续操作会失败。
配置内网服务器
将frpc以及frpc.ini放到内网服务器上,运行nohup ./frpc -c ./frpc.ini &
。注意,frpc.ini文件内容修改如下:
[common]
server_addr = {你的中转服务器公网IP地址}
server_port = 7000 # 就是上面frps.ini中的bind_port
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000 # 这里设置为6000
远程登录
按照上面的步骤操作完成后,便可以远程访问校内内网服务器。介绍两种方法,个人常使用第二种,非常方便。
第一种,直接使用ssh命令远程登录:ssh -oPort=6000 [{你的中转服务器的用户名}@{你的中转服务器的公网IP地址}]
第二种,下载远程登录工具MobaXterm(https://mobaxterm.mobatek.net/download.html),打开软件:
一定要注意,这里要输入你的中转服务器的公网IP地址,而不是校内服务器内网地址。点击“OK”之后,输入你的中转服务器用户名以及登录密码,便可以进入内网服务器了。
Reference
内网穿透-在家访问校园服务器:https://zhuanlan.zhihu.com/p/54850634