利用FRP内网穿透远程连接树莓派

原文参考:https://zhuanlan.zhihu.com/p/36156129

准备条件

一台带公网IP的轻量应用服务器,以便做转发的服务端。

服务端配置 - frps

FRP官网会有各个版本的下载链接,我这里用参考文章中的frp_0.17.0_linux_amd64为例

wget https://github.com/fatedier/frp/releases/download/v0.17.0/frp_0.17.0_linux_amd64.tar.gz
tar -zxvf frp_0.17.0_linux_amd64.tar.gz
cd frp_0.17.0_linux_amd64
vi frps.ini

输入 i 编辑配置文件为

[common]
bind_port = 7000
vhost_http_port = 80
dashboard_port = 7001
dashboard_user = densu
dashboard_pwd = your-password
privilege_token = your-token
///
参数说明
bind_port:绑定的端口,需要与客户端中 server_port 参数保持一致
vhost_http_port:虚拟主机运行在本机的端口,如果 vps 有服务占用了端口,应当更换
dashboard_port:frp 后台服务页面的端口,如果设置 8000,便可通过 http://yourip:8000 来访问 frps 的后台页面
dashboard_user:frp 后台服务页面的管理员用户名
dashboard_pwd:frp 后台服务页面的管理员密码
privilege_token:自定义值,必须与客户端中的 privilege_token 保持一致
///

按esc 输入:wq保存退出

使用下面的命令启动

nohup ./frps -c ./frps.ini

启动后可以直接关闭ssh连接, 应用已经被挂起,不会关闭,当然也可以尝试用原文中的方法挂起应用,这里不做测试了

为了让服务器一直运行 frp 服务,这里还可以将它添加到开机自启脚本中,命令行如下:
sudo nano /etc/rc.local

exit 0 前一行,写上命令,其中 <your_frp_path> 为你 frp 存放的目录位置,即:

<your_frp_path>/frps -c <your_frp_path>/frps.ini

ctrl+o 保存,之后 回车 确认,然后 ctrl+x 退出。

客户端配置 - frpc

FRP官网会有各个版本的下载链接,我这里用参考文章中的frp_0.17.0_linux_amd64为例

wget https://github.com/fatedier/frp/releases/download/v0.17.0/frp_0.17.0_linux_arm.tar.gz
tar -zxvf frp_0.17.0_linux_arm.tar.gz
cd frp_0.17.0_linux_arm
vi frpc.ini

输入 i 编辑配置文件为


[common]
server_addr = your_servies_ip
server_port = 7000
privilege_token = your-token
login_fail_exit = true

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

///
参数说明
server_addr:服务器端的 ip
server_port:服务器端的端口,即 bind_port
privilege_token:同服务器端的 privilege_token 保持一致
login_fail_exit:失败时自动重连
remote_port:远程端口,即 ssh 连接树莓派时的端口
///

按esc 输入:wq保存退出

使用下面的命令放行树莓派的6000端口

sudo ufw allow 6000

使用下面的命令确保树莓派的SSH服务已启用

sudo systemctl enable ssh && sudo systemctl start ssh

使用下面的命令启动

nohup ./frpc -c ./frpc.ini

云服务器配置

因为我用的腾讯云,所以这里用腾讯云举例

打开服务器防火墙

放行6000、7000、7001端口

连接

以上配置完成之后,就可以远程 ssh 连接到树莓派了。命令行如下:

ssh -o Port=<remote_port_number> pi@<your_server_ip>

其中,<remote_port_number> 为树莓派配置中的 remote_port 参数值,<your_server_ip> 为服务器 ip。pi为树莓派的用户名,像我的就可以替换成densu了

结语

折腾了一两个小时,总算弄完了,接下来看看能在树莓派上部署点什么好玩的。只买了很基础配置的树莓派(3B+,1G内存,16G内存卡)

评论