此文转载自:https://blog.csdn.net/Fei20140908/article/details/113354646

场景描述

使用校外网络不通过学校VPN直接ssh连接到实验室机器,需要一台VPS,可以使用腾讯云的免费一个月的套餐,其网速为3M,用来作远程桌面就显得不够了,如果想远程桌面,建议购买高带宽的VPS。

  • 所需工具 开源软件frp
  • 一台VPS,我这边是centos 7.6系统,腾讯云
  • 实验室机器(我这边是ubuntu,如果是windows,区别在于frp客户端的安装运行,配置文件不变,具体可以参考官方文档

具体步骤

前两步实验室机器和VPS上都一样的

一、golang运行环境

frp依赖golang,可以通过go version检查是否有go环境,这边安装的是 1.15.7的

wget https://studygolang.com/dl/golang/go1.15.7.linux-amd64.tar.gz
sudo tar -zxf go1.15.7.linux-amd64.tar.gz -C /opt
echo 'PATH=/opt/go/bin:${PATH}' >> ~/.bashrc
source ~/.bashrc
# 确认Go环境
go version

二、获取frp包

这一步在腾讯云服务器上可能太慢,最好下好直接传过去

wget https://github.com/fatedier/frp/releases/download/v0.35.0/frp_0.35.0_linux_amd64.tar.gz
tar -zxf frp_0.35.0_linux_amd64.tar.gz
cd frp_0.35.0_linux_amd64

三、安装frp服务器

  • 前面两步在实验室机器和VPS上都要执行,这一步在VPS上执行
  • 配置默认7000端口,就想改可以更改frps.ini文件对应的端口数字,然后在腾讯云的控制面板防火墙上打开对应的端口
  • 启动vps上的frps服务,一般情况下,腾讯云的服务器应该不会挂掉,如果想要创建守护进程,使得服务挂了可以自己重启,可以参考后面的客户端安装方法。
nohup ./frps -c ./frps.ini &

在实验室机器上测试是否能连上,这里公网ip指vps的公网ip,出现以下结果,说明防火墙配置ok

$ telnet 公网ip 7000
Trying 公网ip...
Connected to 公网ip.
Escape character is '^]'.

如果出现失败,则应该是防火墙没整好,可以自行解决。

四、安装frp客户端

这一步在实验室机器上执行
修改frpc.ini文件

[common]
server_addr = 公网ip
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

# (optional) windows remote desktop
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3389

# (optional) nomachine
[nx]
type = tcp
local_ip = 127.0.0.1
local_port = 4000
remote_port = 4000

配置文件里面还可以增加其它的,然后要在VPS上确保对应的remote_port是对外开放的

由于实验室机器可能断电,最好做下双层防护,修改BIOS的power manager功能,使得实验室机器在来电后自动重启。

假如实验室电脑重启或者不明因素服务挂掉,我希望它自己能重启,所以需要创建守护进程,让它自己开机自启、挂掉重启。

sudo vim /etc/systemd/system/frpc.service 
# 内容如下
[Unit]
Description=frpc
After=network.target

[Service]
Type=simple
Restart=always
User=yourusername
Group=yourusername

ExecStart=/yourpath/frpc -c /yourpath/frpc.ini

[Install]
WantedBy=multi-user.target

其中,yourpath是指frp加压后的目录全地址,yourusername是指实验室机器上的用户名

  • 保存好,然后执行sudo systemctl daemon-reload重新加载配置文件
  • 再执行,sudo systemctl enable frpc.service设置为开机启动
  • 启动服务 systemctl start frpc.service

如果不想创建守护进程,则直接执行 nohup ./frpc -c ./frpc.ini &

五、功能验证

在一台连接外网的机器上,可以是手机热点,ssh到服务器

ssh user@公网ip -p 6000

同理,如果是nomachine或者rdp,也直接填公网ip以及读应端口即可

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐