设为首页 收藏本站
查看: 962|回复: 0

[经验分享] 借助 frp 随时随地访问自己的树莓派

[复制链接]

尚未签到

发表于 2017-11-22 08:14:23 | 显示全部楼层 |阅读模式
前言
  看了知乎上的一个「树莓派」是什么以及普通人怎么玩? 的高票回答,双十一时间,果断买了一个树莓派 3.
  
周一(11.13) 到的货.我目前只想实现一个简单的功能 -- 想从任意位置访问我的树莓派. 就像一个潘多拉魔盒,第一步肯定是拿到钥匙!

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


调试
  我前面说过了,我买的是套装,自带一个小显示器的那种.主要是内网ip经常变,我不是很容易确定树莓派的ip.还有就是第一次启动时,我需要手动输入下密码.
  虽然听了很多,但是真的看到那个小盒子,加上那么低价的显示器,竟然真的一起合作,把系统桌面给显示出来了,还是有一点点触动的. NB 啊~
DSC0001.jpg

  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



  • sudo su  
    切换至超级用户

  • df -h  
    显示出当前分区的状态和使用率

  • 输入 fdisk /dev/mmcblk0 加载SD卡
  • p 打印当前分区  
    你应该会看到三个分区(mmcblk0, mmcblk0p1, mmcblk0p2),现在把分区2的信息写下来(/dev/mmcblk0p2)
      
    我主要记录了开始扇区(122880)和结束扇区(8447999)的数值
      
    7.按 d 开始删除分区

  • 系统提示输入删除分区号,输入 2
  • n 新建分区,然后依次输入 p, 2
  • 接下来输入原来记录的2扇区开始号(122880),记得替换成你自己的数字
  • w 保持配置
  • 输入 reboot 重启树莓派
  • 输入 sudo resize2fs /dev/mmcblk0p2 更新系统
  • 输入 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 的控制台页面了:
DSC0002.jpg

  注意:


  • 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  

参考


  • 初次使用树莓派并启用root管理员(登录root管理员)
  • 利用 frp 进行内网穿透
  • frp 官方中文文档
  • vi/vim基本使用方法
  • Systemd 官网中文版
  • 充分使用树莓派SD卡
  • 解决树莓派无法重启自动启动 frpc 的问题
  • 将多个显示器与 Mac 配合使用

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-409403-1-1.html 上篇帖子: 远程连接Linux虚拟机上的mysql失败的解决方法 下篇帖子: 【第一阶段】第一周作业
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表