前言
最近入手了一块树莓派4B,由于手头没有多余的显示器,只能采用"无头"模式(headless)进行安装和配置。本以为只是简单的刷系统、建两个文件就能搞定,没想到过程中遇到了不少坑:WiFi连不上、默认密码无效、SSH拒绝连接、IP地址变来变去......好在最终通过一步步排查和尝试,成功用MobaXterm远程登录了树莓派。现将完整的踩坑过程和解决方案记录下来,希望能帮助到有同样需求的朋友。
一、准备工作
-
硬件:树莓派4B、16GB SD卡、读卡器、电脑(Windows)、USB转TTL串口模块(备用,但最终成为救命稻草)
-
软件:Raspberry Pi Imager(官方刷机工具)、MobaXterm(SSH客户端)、Notepad++(编辑配置文件)、DiskGenius(备用,用于修改Linux分区文件)
二、第一次尝试:传统"无头"配置法
1. 刷写系统
从树莓派官网下载最新版Raspberry Pi OS Lite(无桌面版),用Raspberry Pi Imager烧录到SD卡。
2. 开启SSH和配置WiFi
按照网上的教程,在SD卡的boot分区根目录下新建两个文件:
-
空文件
ssh(用于开启SSH) -
wpa_supplicant.conf(用于连接WiFi)
wpa_supplicant.conf 内容如下:
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="我的中文WiFi"
psk="mypass@word"
key_mgmt=WPA-PSK
}
保存后弹出SD卡,插入树莓派,上电。
3. 第一次失败:找不到树莓派IP
登录路由器后台,发现并没有名为raspberrypi的新设备。WiFi指示灯正常闪烁,但就是连不上。
排查思路:
-
重新插拔SD卡到电脑,发现
ssh文件消失了 (正常现象,说明系统已读取并开启SSH服务),但wpa_supplicant.conf还在。 -
怀疑是WiFi配置文件有问题。
4. 排查WiFi配置文件
-
文件名问题 :确认文件名是
wpa_supplicant.conf,而不是wpa_supplicant.conf.txt(Windows默认隐藏扩展名,需开启显示)。 -
编码问题 :我的SSID是中文,密码含
@特殊字符。用Windows记事本保存会默认ANSI编码,导致树莓派无法识别。改用Notepad++将文件转为UTF-8无BOM格式。 -
格式检查 :确保
country=CN存在,引号为英文半角,无多余空格。 -
换行符问题:在Notepad++中转换为Unix格式(LF)。
修改后重新插入树莓派,依然连不上WiFi。
三、启用串口,查看启动日志
1. 连接USB转TTL串口模块
树莓派引脚连接:
-
GND -> GND(6号引脚)
-
TXD(模块)-> RXD(树莓派10号引脚)
-
RXD(模块)-> TXD(树莓派8号引脚)
电脑上打开串口助手(如PuTTY),波特率115200,连接后给树莓派上电。
2. 发现问题:默认账号密码无效
启动日志最后显示登录提示:
text
raspberrypi login: pi
Password:
Login incorrect

原来新版树莓派OS已经移除了默认的pi用户和密码raspberry !需要在第一次启动时自己创建。而我的wpa_supplicant.conf虽然可能被读取了,但因为没有用户,系统根本就没完成首次配置,WiFi连接自然也不会生效。
四、尝试救援模式修改密码
1. 使用init=/bin/sh绕过登录
修改boot分区下的cmdline.txt,在末尾添加init=/bin/sh。重新上电后,串口输出卡在ordered data mode. Quota mode: none.,没有出现#提示符。按回车无反应,可能是终端交互问题。
2. 改用systemd.unit=rescue.target
将cmdline.txt中的init=/bin/sh替换为systemd.unit=rescue.target,这次出现了登录提示,但仍然要求输入root密码(默认锁定),无法进入。
3. 直接修改shadow文件(理论上可行)
用DiskGenius读取SD卡的ext4分区,找到/etc/shadow文件,将pi用户的密码字段清空(变成pi::......)。但考虑到操作较复杂,且手头已有串口,决定采用更稳妥的方法------重刷系统并用Imager预配置。
五、使用Raspberry Pi Imager预配置,一次成功
1. 重新烧录并预置账号和WiFi
打开Raspberry Pi Imager,选择操作系统(依旧Raspberry Pi OS Lite),点击右下角的齿轮图标进入高级设置:
-
设置主机名(可选)
-
启用SSH ,并设置用户名(例如
pi)和密码(例如mypassword) -
配置无线局域网 :输入我的中文SSID、含
@的密码,国家选择CN -
设置时区等
写入SD卡,插入树莓派,上电。
2. 成功连接WiFi
几分钟后,在路由器后台看到了设备raspberrypi,IP地址为192.168.0.104。串口登录也正常,用刚设置的用户名密码成功进入系统。
六、SSH连接失败:Connection refused
1. 现象
用MobaXterm连接192.168.0.104:22,提示Network error: Connection refused。
2. 排查步骤
-
检查SSH服务 :串口登录后执行
sudo systemctl status ssh,显示active (running)。 -
检查防火墙 :执行
sudo ufw status,发现ufw: command not found(系统默认未安装)。安装ufw:sudo apt update && sudo apt install ufw -y,然后sudo ufw allow 22/tcp,再sudo ufw enable。 -
确认端口监听 :
sudo ss -tlnp | grep :22,看到0.0.0.0:22在监听。 -
再次测试:MobaXterm依然连接被拒。
3. 意外发现:IP地址变了
在树莓派上执行ip a,发现IP变成了192.168.0.107!原来路由器的DHCP重新分配了地址。尝试用新IP连接,成功登录!
教训:树莓派的IP地址可能动态变化,需要固定下来。
七、固定IP地址的两种方法
方法一:在树莓派上配置静态IP
根据网络管理器不同有两种方式:
-
NetworkManager(新版默认):
bash
nmcli con show # 查看连接名称 sudo nmcli con mod "Wired connection 1" ipv4.method manual \ ipv4.addresses 192.168.0.100/24 \ ipv4.gateway 192.168.0.1 \ ipv4.dns "8.8.8.8 114.114.114.114" sudo nmcli con down "Wired connection 1" && sudo nmcli con up "Wired connection 1" -
dhcpcd(传统方法) :
编辑
/etc/dhcpcd.conf,添加:text
interface eth0 static ip_address=192.168.0.100/24 static routers=192.168.0.1 static domain_name_servers=8.8.8.8 114.114.114.114重启服务或重启树莓派。
方法二:路由器IP-MAC绑定(推荐)
-
获取树莓派MAC地址:
ip link,找到eth0或wlan0的link/ether字段,如dc:a6:32:xx:xx:xx。 -
登录路由器后台(
192.168.0.1),找到"DHCP服务器" -> "静态地址分配"或"IP与MAC绑定"。 -
添加条目:MAC地址填树莓派的,IP地址填想固定的(如
192.168.0.100),保存。 -
重启树莓派网络或重启树莓派,之后每次都会获取该固定IP。
我选择了路由器绑定,简单有效,而且所有设备的固定IP统一管理。
八、最终成功
设置好固定IP后,用MobaXterm连接192.168.0.100,瞬间进入树莓派命令行。至此,无头配置圆满完成!
总结与避坑指南
-
新版系统无默认用户 :2023年后的Raspberry Pi OS移除了
pi用户,必须通过Imager预配置或首次启动时创建。 -
WiFi配置文件细节:
-
文件名必须正确,注意扩展名隐藏问题。
-
中文SSID必须使用UTF-8编码保存。
-
特殊字符密码直接写在引号内,无需转义。
-
country=CN不能少。
-
-
救援模式 :
init=/bin/sh可能因终端交互问题卡住,systemd.unit=rescue.target需要root密码,不如直接重刷或编辑shadow文件。 -
SSH连接被拒:先检查SSH服务是否运行,再检查防火墙,最后确认IP是否变化。
-
固定IP:推荐在路由器上设置IP-MAC绑定,避免树莓派端配置出错。
-
串口大法好:当所有方法失效时,USB转TTL串口模块是终极调试利器,能看到启动日志,直接登录系统。
希望这篇文章能帮你少走弯路,顺利玩转树莓派!如果有其他问题,欢迎留言交流。