树莓派从Buster升级Bullseye后无头模式SSH连接被拒
关于外接显示器排查的可行性
完全可以给无头模式安装的树莓派外接显示器、USB键盘直接操作设备排查,这是跨大版本升级出故障时最稳妥的排查方式,全程不需要重装系统。
跨版本升级后出现网络服务异常时,本地操作不受网络服务状态影响,比远程折腾的效率高很多。
为什么boot分区放ssh文件的方法无效
你之前用的在boot盘新建ssh文件开启SSH的方法,仅在首次启动全新烧录的树莓派系统镜像时,由系统内置的首次初始化脚本执行生效。你是在原有系统上跨版本升级,系统不会走首次初始化的流程,自然不会识别这个文件、也不会自动删除它,这个方法对你当前的场景完全没用。
具体修复步骤
优先方案:外接显示器+键盘本地修复
- 树莓派通电前接好HDMI显示器、USB键盘,开机后用你自己设置的账号密码登录(如果没修改过默认凭据,默认账号是
pi,默认密码是raspberry) - 执行
sudo raspi-config打开系统配置工具,依次选择Interface Options->SSH,在弹出的确认选项中选择<Yes>开启SSH服务,确认后暂时不要退出配置工具 - 切到本地命令行终端,执行
sudo systemctl status ssh检查SSH服务状态:- 如果服务显示
inactive(未运行)或者failed(启动失败),先执行sudo apt update && sudo apt install -y --reinstall openssh-server,修复升级过程中可能损坏、被意外移除的SSH服务包 - 执行
sudo chmod 600 /etc/ssh/ssh_host_* && sudo chmod 644 /etc/ssh/*.pub /etc/ssh/ssh_config /etc/ssh/sshd_config修复SSH密钥和配置文件的权限——跨版本升级时配置文件权限被重置是SSH服务启动失败的最常见原因,SSH出于安全要求,密钥文件权限过宽时会直接拒绝启动 - 执行
sudo systemctl enable --now ssh设置SSH服务开机自启并立即启动服务 - 再次执行
sudo systemctl status ssh,确认服务状态显示为active (running)即可
- 如果服务显示
- 额外排查:如果服务显示运行但还是连不上,回到raspi-config选择
System Options->Network at Boot,设置为开机等待网络就绪后再加载服务,避免网卡初始化慢于SSH服务启动导致的连接异常。
确认SSH可以正常连接后,就可以拔掉显示器、键盘,恢复无头使用模式。
无外设临时修复方案(需额外Linux设备)
如果暂时找不到显示器、键盘,可以把树莓派的SD卡拔下,插到另一台运行Linux系统的电脑上,挂载SD卡的ext4格式根分区(不是FAT32格式的boot分区),通过chroot进入SD卡内的系统环境,按照上面本地修复的步骤重新安装openssh-server、修复权限、开启SSH服务开机自启,操作完成后把SD卡插回树莓派通电启动即可。
注意:Buster升级到Bullseye属于跨两个大版本的Debian系统升级,升级后出现服务失效大多是软件包配置冲突、服务被意外禁用、文件权限异常导致的,不需要全新安装系统,针对性修复对应服务即可恢复。
内容的提问来源于stack exchange,提问作者CLRW97
相关产品推荐
相关产品推荐

