云中树莓派(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 命令,可进行一些基本配置:
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 autosshsystemctl 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:
参考链接: