文档章节

借助 frp 随时随地访问自己的树莓派

ios122
 ios122
发布于 2017/11/14 17:25
字数 2424
阅读 238
收藏 23
点赞 0
评论 2

前言

看了知乎上的一个「树莓派」是什么以及普通人怎么玩? 的高票回答,双十一时间,果断买了一个树莓派 3. 周一(11.13) 到的货.我目前只想实现一个简单的功能 -- 想从任意位置访问我的树莓派. 就像一个潘多拉魔盒,第一步肯定是拿到钥匙!

组装

组装,其实指的是把树莓派放进红白外壳里.基本思路就是,去卖家店铺里看组装说明.其中,小风扇的安装有点特殊,需要接4/6脚.就是最外层的右起第2和第3个.接不对,小风扇,就不会转.我专门截了个图,以备忘:

风扇

调试

我前面说过了,我买的是套装,自带一个小显示器的那种.主要是内网ip经常变,我不是很容易确定树莓派的ip.还有就是第一次启动时,我需要手动输入下密码.

虽然听了很多,但是真的看到那个小盒子,加上那么低价的显示器,竟然真的一起合作,把系统桌面给显示出来了,还是有一点点触动的. NB 啊~

桌面

PS: 这个小显示器,也可以当做 mac 的外接显示器.第一使用 mac 显示器,记住操作技巧是: 用力的把鼠标移到屏幕外,然后光标就会自动出现在另一块屏幕上.

修改默认 ssh 密码

树莓派的 ssh 登录密码, 默认用户名是: pi , 默认密码是: ** raspberry** 要第一时间修改下.

passwd

设置 ssh 自动登录

树莓派默认没有目录 .ssh ,需要先创建下.需要ssh登录到树莓派之后,在派中执行:

mkdir ~/.ssh/

在任意一台想要访问树莓派的电脑中,直接执行(而不是登录到树莓派后执行):

# 设置自动登录.
cat ~/.ssh/id_rsa.pub | ssh pi@树莓派内网ip  "cat >>  ~/.ssh/authorized_keys"

树莓派内网ip 要换为树莓派的内网ip.当然,也需要你用来访问树莓派的电脑和树莓派处于同一局域网.

修改 root 密码

树莓派默认没有 root 密码,直接设置即可.

# 设置 root 密码
sudo passwd root

# 解锁 root 账户
sudo passwd --unlock root

# 切换到 root 账户
su root

解决树莓派容量使用不完全问题

我是 64G 的内存卡,但是看容器总共只有 7.2G.第一反应是遇到了黑心商家,但是网上搜了下,简单设置重启即可.详见: http://cedar-renjun.github.io/2015/10/11/resize-raspberry-sd-volume/

此处引用记录下关键步骤,以供查阅:

操作步骤 1.重新树莓派,进入命令行页面 2.登陆树莓派,用户名 pi,密码 raspberry

  1. sudo su 切换至超级用户
  2. df -h 显示出当前分区的状态和使用率
  3. 输入 fdisk /dev/mmcblk0 加载SD卡
  4. p 打印当前分区 你应该会看到三个分区(mmcblk0, mmcblk0p1, mmcblk0p2),现在把分区2的信息写下来(/dev/mmcblk0p2) 我主要记录了开始扇区(122880)和结束扇区(8447999)的数值 7.按 d 开始删除分区
  5. 系统提示输入删除分区号,输入 2
  6. n 新建分区,然后依次输入 p, 2
  7. 接下来输入原来记录的2扇区开始号(122880),记得替换成你自己的数字
  8. w 保持配置
  9. 输入 reboot 重启树莓派
  10. 输入 sudo resize2fs /dev/mmcblk0p2 更新系统
  11. 输入 df -h 看看,是不是已经完全使用了剩余空间

注意:在第 10 步之后,系统提示让输入结束扇区时,直接保持默认回车即可.

配置 frp

准备公网 ip 和公网服务器

公网ip和公网服务器,类似于一个桥梁.我们通过它将可以访问我们放置在内网的树莓派.服务器,我是买的最低配置的云服务器.当然,用自己已有的ip和服务器也可以.

可选: 准备一个域名

顶级域名或二级域名,只要能做 ip 类型的 DNS 解析都可以.这一步,就是简单的把域名解析到前一步的公网 ip 上.这样以后访问会省事些,不用记ip了. 当然,直接用 ip 访问也是可以的.

配制 frp 服务器端 -- frps

frp 的服务器端,一般名字是 frps,配置文件是 frps.ini. 这两个文件要放到你的公网服务器上.一般,你都应去发布页,去寻找 frp 的对应的操作系统的最新下载版本.此处以 frp_0.13.0_linux_amd64.tar.gz 为例.

# 下载.下载地址可以在github发布页右键点击某个下载项 --> 复制链接地址.
wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_amd64.tar.gz

# 解压.
tar -zxvf frp_0.13.0_linux_amd64.tar.gz

# cd 到 frp 目录.
cd frp_0.13.0_linux_amd64

# 编辑.debian上,打开vim的命令是 vi,不是 vim.
vi frps.ini

在 frps.ini 中输入:

[common]
bind_port = 7000
vhost_http_port =80
dashboard_port = dashboard_port_number
dashboard_user = dashboard_user_name
dashboard_pwd = dashboard_pwd_value
privilege_token = privilege_token_value

然后,开启 frps 即可:

./frps -c ./frps.ini

配置好服务器端后,你应该就可以在浏览中打开 frp 的控制台页面了:

dashboard

注意:

  • dashboard_port_number 改为一个特定的端口号,如8000,如此便可以通过 http://yourip:8000 来访问 frps 的网页控制台页面.
  • dashboard_user_name 和 dashboard_pwd_value,要改为一个自定义的用户名和密码,用于在访问 frps 控制台页面时输入.
  • privilege_token_value 改为一个自定义的值.只要客户端与服务端 privilege_token 匹配时,客户端才能连接到 frp 服务端.

配制 frp 客户端 -- 树莓派

frp 的客户端,一般名字是 frpc,配置文件是 frpc.ini. 这两个文件要放到你的内网服务器--树莓派上.一般,你都应去发布页,去寻找 frp 的对应的操作系统的最新下载版本.此处以 frp_0.13.0_linux_arm.tar.gz 为例.

# 下载.下载地址可以在github发布页右键点击某个下载项 --> 复制链接地址.
wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_arm.tar.gz

# 解压.
tar -zxvf frp_0.13.0_linux_arm.tar.gz

# cd 到 frp 目录.
cd frp_0.13.0_linux_arm.tar.gz

# 编辑. debian上,打开vim的命令是 vi,不是 vim.
vi frpc.ini

在 frpc.ini 中输入:

[common]
server_addr = your_server_ip
server_port = 7000
privilege_token = privilege_token_value
login_fail_exit = false

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

remote_port = remote_port_number

然后,开启 frpc 即可:

./frpc -c ./frpc.ini

配置好服务器端后,你应该在任意可以连接到互联网的电脑上,使用 ssh 访问自己的树莓派了:

# 端口和ip要记得替换为自己的.
ssh -oPort=remote_port_number pi@your_server_ip

注意:

  • your_server_ip 要替换为公网服务器上绑定的公网 ip.
  • frps 服务器端与客户端不必是同一操作系统, 但frp 版本最好对应
  • 树莓派3 debian 系统,需要的是 arm 版本的程序安装包.
  • privilege_token 要和服务器端的 frps.ini 中对应
  • login_fail_exit 很重要,否则后面无法实现系统重启时自动启动 frpc 功能.
  • remote_port_number,用来指定通过远程服务器的哪个端口来 ssh 访问树莓派.

使用 Systemd 实现自动启动 frp

Systemd,可以保证在树莓派意外重启时,能自动启动 frp 相关服务.这样,我们就不用整天提心吊胆,担心各种意外了.

安装 Systemd

大部分 Linux 系统中,都内置了 Systemd.如果没有,可以手动安装.

安装systemd请运行:

apt-get update
apt-get install systemd
apt-get install systemd-sysv

在安装完 systemd 之后,为了使系统以 systemd 的方式使用,最好在 grub 配置文件中的 kernel 命令行指定下面的参数:

vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash init=/lib/systemd/systemd"

为了使用新安装的systemd来引导系统,请重新启动系统:

# reboot

在服务器端使用 Systemd 管理 frps

# 需要先 cd 到 frp 解压目录.

# 复制文件
cp frps /usr/local/bin/frps
mkdir /etc/frp
cp frps.ini /etc/frp/frps.ini

# 编写 frp service 文件,以 centos7 为例,适用于 debian
vim /usr/lib/systemd/system/frps.service
# 内容如下
[Unit]
Description=frps
After=network.target

[Service]
TimeoutStartSec=30
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

# 启动 frp 并设置开机启动
systemctl enable frps
systemctl start frps
systemctl status frps

# 部分服务器上,可能需要加 .service 后缀来操作,即:
systemctl enable frps.service
systemctl start frps.service
systemctl status frps.service

在树莓派客户端使用 Systemd 管理 frpc

# 需要先 cd frp 解压目录.

# 复制文件
cp frpc /usr/local/bin/frpc
mkdir /etc/frp
cp frpc.ini /etc/frp/frpc.ini

# 编写 frp service 文件,以 centos7 为例,适用于 debian
vim /usr/lib/systemd/system/frpc.service
# 内容如下
[Unit]
Description=frpc
After=network.target

[Service]
TimeoutStartSec=30
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

# 启动 frp 并设置开机启动
systemctl enable frpc
systemctl start frpc
systemctl status frpc

# 部分服务器上,可以需要加 .service 后缀来操作,即:
systemctl enable frpc.service
systemctl start frpc.service
systemctl status frpc.service

注意:

  • frps 或 frpc 启动无效时,可以尝试先停止服务,如:
systemctl stop frpc

参考

© 著作权归作者所有

共有 人打赏支持
ios122
粉丝 70
博文 73
码字总数 128197
作品 3
东城
程序员
加载中

评论(2)

ios122
ios122

引用来自“ming133”的评论

写的很不错,留着以后自己也试试!
:stuck_out_tongue:
ming133
ming133
写的很不错,留着以后自己也试试!
树莓派随身工具箱:中间人劫持获取控制权

  *本文原创作者:Rc4x,本文属FreeBuf原创奖励计划,未经许可禁止转载   导读   上文讲解了树莓派随身工具箱的环境搭建,这段时间又对其进行了一些优化,主要是从便携美观上面改进。同...

FreeBuf ⋅ 04/26 ⋅ 0

树莓派摄像头VLC网络监控

备忘 树莓派有网口,又有摄像头可以用,当然不能浪费资源,下面我就用红外摄像头来做个昼夜均可使用的摄像头监控~ 连接好树莓派的CSI摄像头,我用的是带有红外灯的,并且有光感控制的,只有在...

乐_然 ⋅ 03/11 ⋅ 0

树莓派pi3 串口问题的解决办法

转载: https://blog.csdn.net/aguangg6655la/article/details/54985423 其他参考1:https://blog.csdn.net/xukai871105/article/details/22713925 其他参考2:https://www.briandorey.com/......

zhenguo26 ⋅ 04/18 ⋅ 0

树莓派3b连接串口类型GPS使用使用串口并关闭蓝牙板载方法

树莓派3上用户目前无法正常是使用GPIO中的UART串口(GPIO14&GPIO15),也就是说用户无论是想用串口来调试树莓派,还是想用GPIO中的串口来连接GPS,蓝牙,XBEE等等串口外设目前都是有问题的。 原因...

huazwz ⋅ 04/11 ⋅ 0

树莓派开启VNC,电脑远程实时操控树莓派桌面

一般远程控制树莓派,命令行使用SSH服务,但是有的时候,我们想远程控制树莓派的桌面。这时就要启用VNC了。 1.在树莓派上开启VNC服务: 这样在树莓派上就开启了VNC服务,开启成功后,在桌面右...

乐_然 ⋅ 03/07 ⋅ 0

如何使用树莓派测定颗粒物(PM 2.5)

使用两个简单的硬件设备和几行代码构建一个空气质量探测器。 我们在东南亚的学校定期测定空气中的颗粒物。这里的测定值非常高,尤其是在二到五月之间,干燥炎热、土地干旱等各种因素都对空气...

作者: Stephan Tetzel ⋅ 05/08 ⋅ 0

树莓派可视化编程软件 - BlocklyPi

本项目是一个基于Blockly的树莓派可视化编程软件,类似于Mixly,可以让让零基础不会编程的人玩转树莓派gpio。 使用说明 见项目 地址 更多说明详见BlocklyPi 实际使用 详见 http://hgccloud....

王逸伦 ⋅ 06/11 ⋅ 0

PHP再学习5——RESTFul框架 远程控制LED

0.前言 去年(2013年)2月第一次接触yeelink平台,当时该平台已经运行了一些时间也吸引了不少极客。试想自己也将投身IoT(物联网)行业,就花了些时间研究了它。陆陆续续使用和研究了一年,大...

thinkyoung ⋅ 2014/12/02 ⋅ 0

树莓派3首次安装要做的配置

安装完成后,打开wifi或者连上有线网络 之后在命令行运行如下命令:sudo raspi-config,出现树莓派配置界面。 其中每项的说明如下: 1、Expand Filesystem 扩展文件系统 2、Change User Pas...

乐_然 ⋅ 03/07 ⋅ 0

极客教学:如何使用树莓派击落&劫持无人机

极客教学:如何使用树莓派击落&劫持无人机 本教程的目的是帮助大家理解如何研究未受保护的无线通信的安全风险所在,同时我们希望大家不要对技术进行滥用。我们这里采用的例子是一个流行的无人...

技术小牛人 ⋅ 2017/11/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 53分钟前 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部