怎么在不开机的情况下让树莓派自动连接上wifi

树莓派

什么是树莓派

树莓派(Raspberry Pi)是一款只有巴掌大小的微型计算机开发板,别看它体积小,但它确实是一个功能完备的计算机,可以做绝大部分我们个人电脑(PC)可以做的事情。而且功耗更小。

树莓派支持的系统

目前除了官方主推的Raspberry Pi OS ,还有其他第三方系统,比如基于ubuntu和debian的arm发行版,理论上可以安装微软的Windows,但不推荐,毕竟Windows是收费软件,而且对系统资源相较于linux有更高的要求,作为一款主打轻量级的开发版,Windows显然太重了。

树莓派怎么联网

  1. 树莓派自带支持802.11n的以太网网卡,因此可以直接使用支持RJ45的标准网口连接上网;
  2. 从Model 3开始,树莓派自带支持802.11n的无线网卡,对于无法通过网线直连的场合,wifi变成了我们唯一的途径。

下面具体就怎么在不开机的情况下配置无线连接做个介绍,方便大家在无线环境中使用树莓派。

不得不说,树莓派自带的无线网卡的性能确实很弱,对于大流量的场景不推荐使用,最好自备外接无线网卡。

安装系统

本教程基于Raspberry Pi OS,其他发行版系统可能不适用。下载地址:https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2021-05-28/2021-05-07-raspios-buster-armhf.zip。

制作启动盘

在linux下面可以使用如下命令

1
sudo dd if=/home/your_home/raspberryOS.iso of=/dev/sd{x} bs=4MB status=progress

注意,使用上面的命令时必须确保of参数对应的值是你要写入的SD卡,一般以sd开头,if参数对应的是你下载解压后的原始镜像地址。

windows上的启动盘制作请自行百度

写入wifi配置

1
2
3
4
5
6
7
8
9
country=CN #这里是我们位于的国家的缩写
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1 #更新现有配置
network={
ssid="你的wifi名称"
scan_ssid=1
psk="你的wifi密码"
key_mgmt=WPA-PSK
}

将该文件命名为wpa_supplicant.conf,并将其保存到制作好的启动盘的最外层的boot目录下。

允许ssh访问

在启动盘的最外层的boot目录下创建ssh文件,不需要向里面写入内容。

最后将制作好的sd卡插入到树莓派中启动即可自动连接wifi,然后我们在路由器管理页面查看已连接设备中就能看到带有raspberry pi标签的设备了,找出其ip地址,尝试下使用ssh连接并管理树莓派,如果一切顺利的话,你将可以通过远程访问来管理你的树莓派设备了。

使用静态ip地址

由于树莓派内置了DHCP服务,所以,当我们每次连接上wifi时可能会被分配到不同的ip地址,这显然不利于配置外部对于树莓派后台服务的访问,因此,我们在连接上wifi之后,可以给树莓派配置一个静态ip。

打开/etc/dhcpcd.conf文件,向里面追加如下配置

1
2
3
4
interface wlan0
static ip_address=192.168.0.193/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 192.168.1.1

其中wlan0是我们无线网卡的系统名称,后面的ip_address则是我们自定义的ip地址,routers是我们的路由,domain_name_server是我们的DNS地址,多个DNS的场合使用空格隔开。

如何使用openssh进行远程连接

SSH连接的建立方式

ssh可以通过密码和密钥(更加安全)这两种方式建立起客户端与 服务端的连接。

SSH连接的实现过程(假设通过密钥的方式连接)

  1. 当客户端发起一个ssh连接请求时,它首先会告诉服务端需要使用的公钥;
  2. 然后服务端会检查它的~/authorized_keys文件,这个文件中包含了所有已经保存的客户端公钥,一个公钥占据一行,这些公钥所对应的客户端可以实现免验证登录。
  3. 服务端如果在文件中找到了请求客户端所对应的公钥,就会生成一个随机字符串,并使用找到的公钥进行加密。这个加密后的信息只能被请求客户端的私钥所解密,然后服务端将这个加密后的字符串发送给请求客户端,以此来验证该客户端是否拥有私钥。
  4. 客户端收到来自服务端的加密字符串之后,会立即使用自己的私钥进行解密,并将解密后的随机字符串与之前协商好的会话id结合,生成一个md5加密的hash值,并回传给服务端。
  5. 由于服务端已经知道加密之前的随机字符串和会话id,因此,服务端会在本地将这个随机字符串和会话id进行hash,然后和客户端传过来的值进行比较,如果一致,则表示请求客户端确实拥有私钥,并允许建立连接。
阅读更多