由于新冠疫情,学校开学延迟,因此短期内大家还是要维持远程办公的状态。我这边的需求,一是访问实验室内部的wiki, 二是计算资源,也就是服务器。但是由于学校的vpn的问题,连接经常处于极不稳定的状态,因此十分影响心态和效率。本篇文章简单记录了一下如何使用frp跳过学校vpn,远程连接学校服务器。
frp(快速反向代理)是一个可以用于内网穿透的反向代理应用,很早之前就知道它,但是由于自己一直没有一个公网上的vps,所以没能能拿来做什么事情。一些常见的需求,比如想暴露自己在某个局域网内部(家庭,学校,公司等等)的某些服务(文件,web等等)到公网之外,都可以使用它进行内网穿透(前提是需要有一个公网的主机,进行请求转发)。
ssh连接内网机器的配置README上写的很详细,但是要注意把服务器上对应的端口打开,不然后面ssh的时候会出现”connection refused”的错误。我服务端的系统是centos,可以配合firewall-cmd进行端口管理,写一个脚本run_server.sh
:
1 |
|
脚本里面使用环境变量进行server port的设置,因此frps.ini
里面对应的使用go模板的方式。firewall-cmd是linux上一个替代iptables的防火墙管理工具,使用文档可以参考这里firewall-cmd。
服务端启动起来之后,在学校的服务器上对应的启动客户端的程序,对应使用run_server.sh
里面指定的<server-port>
和<client-port>
:
1 | [common] |
如果两端的log里面没有error,则说明服务启动正常,接下来就可以进行ssh和scp操作了。在上述配置下,对应的连接命令为:
1 | ssh -p <client-port> <user-name>@<server-addr> |
<user-name>
为学校服务器的用户名,本地到远程的数据传输命令为:
1 | scp -P <client-port> -r /local/data/path <user-name>@<server-addr>:/remote/data/path |
反之为:
1 | scp -P <client-port> -r <user-name>@<server-addr>:/remote/data/path /local/data/path |