专栏首页世民谈云计算云中树莓派(1):环境准备

云中树莓派(1):环境准备

1. 设备准备

准备好的设备包括:

  • 树莓派3B,来自某宝
  • 电源,来自某宝
  • 8G 10级 microSD 卡(TF卡),包括读卡器,来自某东
  • 散热片两个,来自某宝
  • SDH22 温度湿度传感器,来自某宝

树莓派确实和一张信用卡一般大小,如下图所示。 它有4个USB,1个有线网口,1个HDMI,1个音频输出,一个电源接口,一个TF卡插口。注意 TF卡接口在USB口的另一面。

2. 系统安装与基本配置

2.1 系统下载

到树莓派官网 https://www.raspberrypi.org/downloads/,下载官方系统镜像 RaspberryPi。下载下来的是一个 zip 文件。

2.2 SD 卡刻录

从 https://sourceforge.net/projects/win32diskimager/files/latest/download 下载刻录工具 win32diskimager.exe。把树莓派镜像 zip 文件解压,然后进行镜像写入:

将 SD卡插入树莓派的SD卡口,然后接通电源,观察指示灯。下表是指示灯表示的各种状态:

第一次失败,只有红灯亮,绿色灯不闪烁。重新写入镜像。

首先根据 https://kb.sandisk.com/app/answers/detail/a_id/14827/~/using-sd-formatter-tool-to-restore-full-capacity-on-sdhc%2Fsdxc-cards 这个教程对SD卡做格式化:

格式化之前,能看到两个盘符,格式化之后,就只能看到一个盘符了。

然后根据网上建议,把树莓派解压后的镜像 .img 文件放到不带中文字符的路径下,重新刻录,然后再通电。此时,能观察到绿灯间歇性闪烁。

但是,此时没有网线,没有SSH,还无法登录系统。

2.3 无线网络准备和SSH连接

将 SD 卡插入Windows 系统后,能看到两个盘,其中一个是 boot(H) 盘。在其根目录下,创建文件 wpa_supplicant.conf,内容如下:

country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1network={
  ssid="<wifi 热点名字>"
  psk="<wifi密码>"} 

然后,在同一个目录下, 新建一个名为 ssh 的空白文件。将 SSD 卡插入树莓派,重新上电。

使用 Advanced IP Scanner 扫描局域网内的IP,很容易就能看到树莓派。如下图所示:

使用 SSH 登录树莓派。默认用户名和密码为 pi/raspberry:

2.4 基本配置

运行 raspi-config 命令,可进行一些基本配置:

修改时区:选择 4.Localisation Options 找到第二个 TimeZone,选择Asia shanghai

修改键盘布局:选择 4.Localisation Options, 第三个,将 键盘布局 改为US 美式键盘(因为树莓派是英国产的 默认是英式键盘 而中国默认的是和美国一样的美式键盘)

最后一个 Wifi地区 选中国

2.5 远程桌面配置

首先要更新系统:

sudo apt-get update
sudo apt-get upgrade

然后安装 xrdp:

sudo apt-get install xrdp

设置其开机自动启动:

sudo systemctl enable xrdp

然后就可以使用 Windows mstsc 远程登录树莓派了:

效果还蛮不错:

3. 外网SSH 访问

当前树莓派在内网中,可以通过Wift访问公网,但是无法从公网访问到。参考这篇文章,利用 SSH反向隧道,实现从外网SSH访问树莓派。

环境准备:

  • 外网需要有一台有公网IP 的 VPS,代号A,公网IP地址为 A1.A2.A3.A4
  • 内网中的可以访问外网的树莓派,代号B

树莓派上的配置:

  • 首先安装 autossh 软件: apt install autossh
  • 创建用户 autossh,产生其 ssh key 文件,拷贝到机器A 上,需要能够从 B 无密码SSH到A。
   useradd -m autossh
  passwd autossh
  su - atuossh
  ssh-keygen -t 'rsa' -C 'autossh@raspberrypi'
  ssh-copy-id ubuntu@A1.A2.A3.A4

创建文件 /lib/systemd/system/autossh.service,内容如下:

[Unit]
Description=Auto SSH Tunnel
After=network-online.target
[Service]
StartLimitIntervalSec=60User=autossh
Type=simple
ExecStart=/usr/bin/autossh -p 22 -M 8889 -NR '*:8888:127.0.0.1:22' ubuntu@A1.A2.A3.A4 -i /home/autossh/.ssh/id_rsa
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always
[Install]
WantedBy=multi-user.target
WantedBy=graphical.target

启动该服务,确保其状态为 active:

chmod 644 /lib/systemd/system/autossh.service
systemctl enable autossh
systemctl start autossh
systemctl status autossh

此时,能看到相关进程:

autossh   3709     1  0 Aug07 ?        00:00:00 /usr/lib/autossh/autossh -p 22 -M 8889 -NR *:8888:127.0.0.1:22 ubuntu@*.*.*.* -i /home/autossh/.ssh/id_rsa
autossh   3712  3709  0 Aug07 ?        00:00:00 /usr/bin/ssh -L 8889:127.0.0.1:8889 -R 8889:127.0.0.1:8890 -p 22 -NR *:8888:127.0.0.1:22 -i /home/autossh/.ssh/id_rsa ubuntu@*.*.*.*

在A 上,能看到在 8888 端口上有 ssh 监听:

tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      18324/sshd: ubuntu

SSH访问:

  • 在A 上,ssh 到 8888 端口,利用树莓派的用户名和密码,可以登录到树莓派:

还可以直接在外网利用A 的公网IP 和树莓派的用户名密码直接SSH:

参考链接:

  • https://blog.csdn.net/lidongshengajz/article/details/73482908

本文分享自微信公众号 - 世民谈云计算(SammyTalksAboutCloud),作者:Sammy Liu

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从台前到幕后,OpenStack走过的这8年

    2010年底,因电信级支撑平台和业务对虚拟化的需要,我在ZTE开始了从嵌入式Linux向云计算的转型。

    SammyLiu
  • 4年!我对OpenStack运维架构的总结

    最近很多人在讨论OpenStack,我也想写点东西。思来想去,云计算范畴实在广泛,自然就聊点最近话题异常火热,让广大云计算从业者爱之深、痛之切,想说一声爱你,不...

    SammyLiu
  • 理解OpenShift(7):基于 Prometheus 的集群监控

    理解OpenShift(5):从 Docker Volume 到 OpenShift Persistent Volume

    SammyLiu
  • 「二八法则」的数据可视化:用帕累托图进行数据分析

    1897 年,意大利经济学家帕累托,在抽样调查的数据中发现,社会上 20% 的人拥有 80% 的财富。

    华章科技
  • 深度学习入门数据集--1.Cifar10数据集

    官网地址 官网上提供多种格式数据集,我们选bin。首先观察前25条记录。由于图像像素32*32,很多图像人眼也是难以进行辨别。

    birdskyws
  • 用gcc编译,c语言程序以及其编译过程!点赞3连

    对于初学c语言编程的我们来说,学会如何使用gcc编译器工具,对理解c语言的执行过程,加深对c语言的理解很重要!!!

    诸葛青云
  • [计算机视觉论文速递] 2018-06-08

    这篇文章有4篇论文速递信息,涉及胶囊网络、迁移学习、优化CNN和手指检测等方向(含一篇NIPS 2017、一篇ICMR 2018和一篇 VCIP 2017)。

    Amusi
  • 用gcc编译c语言程序以及其编译过程

    对于初学c语言编程的我们来说,学会如何使用gcc编译器工具,对理解c语言的执行过程,加深对c语言的理解很重要!!!

    黑泽君
  • JavaScript正则表达式

    正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字...

    水击三千
  • nginx实现负载均衡的原理及策略

    负载均衡在服务端开发中算是一个比较重要的特性。因为Nginx除了作为常规的Web服务器外,还会被大规模的用于反向代理前端,因为Nginx的异步框架可以处理很大的...

    菲宇

扫码关注云+社区

领取腾讯云代金券