如果想要从公网访问到自己的树莓派,就需要做内网穿透,frp 就是此类工具。
但需要注意的是,使用 frp 需要一台有公网 IP 的服务器。我这里用的是阿里云的云服务器。如果没有服务器的话,还有厂商提供的服务可以用,像花生壳什么的,不过那又是另外一个故事了。
当然,如果你有公网 IP ,就可以直接此关闭页面了。
下载
直接去 github 上下载: Release
需要注意的是,根据不同的操作系统或架构,需要下载不同的程序。
比方说我的树莓派4B,下载的就是 frp_0.35.1_linux_arm.tar.gz
这个文件。
而在服务器,我用的是 centOS7,下载的就是 frp_0.35.1_linux_386.tar.gz
如何知道系统的体系结构?这个在文末的参考链接有。
修改配置文件
在具有公网 IP 的服务器上,需要修改 frps.ini 文件。
在树莓派上,需要修改 frpc.ini 文件。
注:以下配置文件只配置了 ssh 连接。
服务端
修改配置文件 frps.ini
# frps.ini
[common]
bind_port = 7000 #frp服务端口
[ssh]
listen_port = 6000 #你转发的服务在外网访问的端口
auth_token = 123 #连接密码
启动 frps
# debug时候用,直接在终端启动
./frps -c ./frps.ini
# 后台启动
nohup ./frps -c ./frps.ini &
如果报错 -bash: ./frps: Permission denied
则给 frps 加权限,使用以下命令:
chmod 777 frps
客户端
修改配置文件 frpc.ini
# frpc.ini
[common]
server_addr = x.x.x.x # 公网 IP 地址
server_port = 7000
auth_token = 123
[ssh]
local_port = 22
remote_port = 6000
启动 frps
# debug时候用,直接在终端启动
./frpc -c ./frpc.ini
# 后台启动
nohup ./frpc -c ./frpc.ini &
测试连接
如果直接运行命令,在终端会打印日志信息,可以看到连接成功之类的信息。
这时候可以新开一个会话,输入 ssh -p6000 root@xxx.xx.xx.xx
命令。
其中 xxx.xx.xx.xx 指的是公网服务器的 IP,root 指的是以 root 用户登录,6000 是配置文件中所指定 ssh 的访问端口。
敲入命令后会提示输入密码,填入密码完事。
关于日志,如果使用 nohup 命令启动的话,可以查看目录下的 nohup.out 文件来查看日志,使用命令:tail -f nohup.out
看着满屏幕的输出日志,如果这个时候又想做些其他操作怎么办?当然可以再开一个会话,但是也可以使用 screen 工具。screen 可以打开一个窗口,这样就相当于有了两个终端,可以随意切换。
我使用 frp 就是使用 nohup 命令让其在后台启动,然后利用 screen 创建一个窗口,其中使用 tail 命令查看日志。这样如果出现了问题,可以切换到窗口查看日志查看错误。
screen
关于后台启动,还可以使用 screen
安装 screen :
# debian 系统 (树莓派官方系统那个也是 debian )
sudo apt-get install screen
# centos
yum install screen
服务端
screen -S frps
cd 安装目录
./frps -c ./frps.ini
客户端
screen -S frpc
cd 安装目录
./frpc -c ./frpc.ini
启动完 frp ,关闭掉窗口,或者按 Ctrl+A+D 保持会话退出。
这里还有一些 screen 的常用参数:
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session