场景描述
使用校外网络不通过学校VPN直接ssh连接到实验室机器,需要一台VPS,可以使用腾讯云的免费一个月的套餐,其网速为3M,用来作远程桌面就显得不够了,如果想远程桌面,建议购买高带宽的VPS。
具体步骤
前两步实验室机器和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以及读应端口即可
所有评论(0)