地址:

首先分别查看服务器和树莓派的系统架构。

1
2
3
4
5
6
7
# Server
$ uname -a
Linux VM-0-2-ubuntu 4.4.0-148-generic #174-Ubuntu SMP Tue May 7 12:20:14 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

# Raspberry Pi
$ uname -a
Linux raspberrypi 4.19.57-v7+ #1244 SMP Thu Jul 4 18:45:25 BST 2019 armv7l GNU/Linux

访问FRP的release页面查看对应架构的最新版下载地址,在服务器和树莓派分别下载并解压。

1
2
3
4
$ mkdir -p app/install & cd app/install
$ wget https://github.com/fatedier/frp/releases/download/v0.28.2/frp_0.28.2_linux_arm.tar.gz
$ tar -zxvf frp_0.28.2_linux_arm.tar.gz
$ sudo mv frp_0.28.2_linux_arm /usr/local/frp

以上步骤服务器和树莓派一致,上面的示例是针对树莓派3B+的armv7l架构,服务器注意替换为amd64的下载链接。

接下来需要修改配置文件,树莓派配置文件为frpc.ini,服务器配置文件为frps.ini,对应C/S架构中的服务端和客户端。服务器采用默认配置,树莓派将表示服务器地址的x.x.x.x替换为实际地址。

1
2
3
4
5
6
7
8
9
10
11
12
13
# frps.ini
[common]
bind_port = 7000

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

树莓派开放端口

1
2
sudo ufw allow 6000
sudo ufw allow 7000

接着切换到上面的工作路径/usr/local/frp,服务端执行./frps -c frps.ini,树莓派执行./frpc -c ./frpc.ini

电脑打开ZSH,或手机打开Termius,ssh -oPort=6000 pi@x.x.x.x测试我们的连接。注意这里pi代表在树莓派上的用户名,而x.x.x.x代表服务器的IP地址,正常情况下这个时候你会看到熟悉的Linux登录成功提示。

可我没有,转念一想,应该是防火墙的问题。前往腾讯云的控制台,在安全组中添加以下两条:

1
2
0.0.0.0/0 TCP:6000
0.0.0.0/0 TCP:7000

再次测试ssh连接,终于见到了熟悉的Linux登录成功提示。

到此为止已经实现了随时随地SSH连接家中的树莓派,通过下面的命令可以后台运行并记录日志。

1
2
3
4
5
# Server
nohup ./frps -c ./frps.ini > frps.log 2>&1 &

# Raspberry Pi
nohup ./frpc -c ./frpc.ini > frpc.log 2>&1 &

出于安全考虑,可以在服务器和树莓派的配置文件中增加token字段,服务器和树莓派的token字段需要保持一致。建议生成随机数或伪随机数,我最终采用的是date | md5 | head -c 8的输出结果。

由于暴躁的我常常出于无法忍受树莓派的噪音而关机,有必要将FRP加入开机启动。

首先创建service:

1
2
3
4
5
6
7
8
9
10
11
12
sudo vi /etc/systemd/system/frpc.service
# /etc/systemd/system/frpc.service
[Unit]
Description=frpc
After=network.target
[Service]
TimeoutStartSec=30
WorkingDirectory=/usr/local/frp
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini
Restart=on-failure
[Install]
WantedBy=multi-user.target

服务器和树莓派配置过程相同,服务器只需要将frpc替换为frps即可。

1
2
3
4
5
6
7
8
# 刷新服务
sudo systemctl deamon-reload
# 允许开机启动
sudo systemctl enable frpc.service
# 运行服务
sudo systemctl start frpc.service
# 查看状态
sudo systemctl status frpc.service

到这里开机启动也设置完毕了,树莓派远程吃灰的玩法等你开发。:)

me:

1
ssh -oPort=6000 pi@119.29.177.15