随笔- 170  评论- 695  文章- 49 

云中树莓派(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=1
network={
   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=60
User=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:

  

参考链接:

欢迎大家关注我的个人公众号:

 

 

 

 

 

posted on 2018-08-08 09:52 SammyLiu 阅读(...) 评论(...) 编辑 收藏