树莓派4B无头安装与远程连接踩坑记:从零到SSH成功

前言

最近入手了一块树莓派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绑定(推荐)

  1. 获取树莓派MAC地址:ip link,找到eth0wlan0link/ether字段,如dc:a6:32:xx:xx:xx

  2. 登录路由器后台(192.168.0.1),找到"DHCP服务器" -> "静态地址分配"或"IP与MAC绑定"。

  3. 添加条目:MAC地址填树莓派的,IP地址填想固定的(如192.168.0.100),保存。

  4. 重启树莓派网络或重启树莓派,之后每次都会获取该固定IP。

我选择了路由器绑定,简单有效,而且所有设备的固定IP统一管理。


八、最终成功

设置好固定IP后,用MobaXterm连接192.168.0.100,瞬间进入树莓派命令行。至此,无头配置圆满完成!


总结与避坑指南

  1. 新版系统无默认用户 :2023年后的Raspberry Pi OS移除了pi用户,必须通过Imager预配置或首次启动时创建。

  2. WiFi配置文件细节

    • 文件名必须正确,注意扩展名隐藏问题。

    • 中文SSID必须使用UTF-8编码保存。

    • 特殊字符密码直接写在引号内,无需转义。

    • country=CN不能少。

  3. 救援模式init=/bin/sh可能因终端交互问题卡住,systemd.unit=rescue.target需要root密码,不如直接重刷或编辑shadow文件。

  4. SSH连接被拒:先检查SSH服务是否运行,再检查防火墙,最后确认IP是否变化。

  5. 固定IP:推荐在路由器上设置IP-MAC绑定,避免树莓派端配置出错。

  6. 串口大法好:当所有方法失效时,USB转TTL串口模块是终极调试利器,能看到启动日志,直接登录系统。

希望这篇文章能帮你少走弯路,顺利玩转树莓派!如果有其他问题,欢迎留言交流。

相关推荐
九成宫2 小时前
SSH 密钥操作经历与 VSCode 远程连接“找不到ssh安装”解决
运维·vscode·ssh
MMendex2 小时前
华为云项目实战day1
linux·服务器·nginx·华为云·ssh·负载均衡
相思难忘成疾13 小时前
《RHEL9虚拟机部署及SSH远程登录实践手册》
linux·运维·ssh·虚拟机
热爱生活的五柒21 小时前
vscode通过remote-ssh一直链接不上远程主机
ide·vscode·ssh
头发那是一根不剩了2 天前
Ubuntu 系统修改 SSH 端口完整操作文档
ubuntu·ssh
kebidaixu2 天前
VS Code安装 Remote - SSH 扩展
linux·服务器·ssh
Rabbit_QL2 天前
GitHub 多账号 SSH 配置指南:让个人和工作账号共存
运维·ssh·github
jnrjian2 天前
Offending ECDSA key in /home/oracle/.ssh/known_hosts:16
运维·ssh
yqzyy2 天前
如何安装配置Goland并使用固定公网地址SSH远程连接本地服务器
运维·服务器·ssh