准备工作
树莓派:3B+
一台有固定公网IP的服务器
frp:链接
操作流程
服务器端
服务器是64位的,Ubuntu的系统,下载对应版本的文件:
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
解压文件:
tar -xvzf frp_0.33.0_linux_amd64.tar.gz
进入解压后的文件夹并复制文件:
cd frp_0.33.0_linux_amd64/
# 可执行文件
sudo cp frps /usr/local/bin/frps
sudo mkdir /etc/frp
# 服务器端配置文件
sudo cp frps.ini /etc/frp/frps.ini
修改配置文件
sudo vi /etc/frp/frps.ini
大约改成下面的样子
[common]
# 通信端口,可以自选
bind_port = 7999
# 下面三项是dashboard的内容,可以不管,如果设置了可以通过服务器地址:端口的方式查看dashboard
# 端口可以自己选择
dashboard_port = 7997
dashboard_user = your username
dashboard_pwd = your password
然后把服务添加到systemd
的开机启动里,首先把文件复制过去
sudo cp frps.service /usr/lib/systemd/system/frps.service
# 如果systemd下面没有system文件夹的话可以创建一个
修改这个文件:
sudo vi /usr/lib/systemd/system/frps.service
基本上不怎么用改了
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
# 启动设置,这里的对应上面可执行文件和配置文件的路径
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
[Install]
WantedBy=multi-user.target
最后链接过去
sudo systemctl enable frps
# 最后一项frps就是service的文件名,改了别的名字同理
启动服务
sudo systemctl start frps
树莓派端
树莓派是32位的arm机器,所以下载对应的frp:
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_arm.tar.gz
同样解压文件:
tar -xvzf frp_0.33.0_linux_arm.tar.gz
进入目录:
cd frp_0.33.0_linux_arm/
复制文件:
# 可执行文件
sudo cp frpc /usr/local/bin/frpc
sudo mkdir /etc/frp
# 客户端配置文件
sudo cp frpc.ini /etc/frp/frpc.ini
修改客户端配置文件:
sudo vi /etc/frp/frpc.ini
主要设置的几项:
[common]
# 服务器地址,IP或者网址
server_addr = x.x.x.x
# 通信端口,要跟服务器端一样
server_port = 7999
[ssh]
type = tcp
local_ip = 127.0.0.1
# 本地ssh端口
local_port = 22
# 穿透之后的ssh端口,可以自选,启动之后就通过server_addr:remote_port来访问树莓派的ssh
remote_port = 7998
同样创建开机启动,复制文件:
sudo cp frpc.service /usr/lib/systemd/system/frpc.service
修改文件:
sudo vi /usr/lib/systemd/system/frpc.service
同样没有什么大改的:
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
User=nobody
Restrt=on-failure
RestartSec=5s
# 同样这里的可执行文件和配置文件路径要跟上面一致
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
ExecReload=/usr/local/bin/frpc reload -c /etc/frp/frpc.ini
[Install]
WantedBy=multi-user.target
跟服务器端一样需要链接文件过去:
sudo systemctl enable frpc
然后启动:
sudo systemctl start frpc
全部完成以后从外网ssh连接树莓派使用frpc.ini
中的server_addr
和remote_port
。
没有配置把树莓派上的web服务暴露到外网上的部分,这个需求可以继续参考官方文档和这篇文章。