Files
T

24 lines
1.6 KiB
Markdown

# 离线镜像 1.0.2 SSH 首启失败修复记录
## 现场结果
- 设备供电后网络间歇可达,但 SSH 22 和控制服务 8080 在 20 分钟门槛内始终未开放。
- FAT 状态文件报告 `stage=ssh` 失败;账户、sudoers、受管 SSH 配置、服务启用链接、machine-id 和新 SSH 主机密钥均已写入。
- ext4 systemd journal 的直接证据为:`sshd -t` 报告缺少 privilege separation 运行目录 `/run/sshd`,随后首启服务以退出码 1 失败。
## 根因与修复
- 首启 unit 通过 `Before=ssh.service` 正确阻止 SSH 提前监听,因此 systemd 尚未为 `ssh.service` 创建易失的 `/run/sshd`。
- 首启程序却在服务启动前直接执行 `sshd -t/-T`,错误依赖了该目录已经存在。
- `configure_ssh` 现于策略校验前创建 `/run/sshd` 并设置模式 `0755`;需求和测试映射同步增加该门槛。
- 同版本正式 IMG 只刷新 FAT bundle,第二分区保持核桃派已验证的 SHA-256 `a3207843b6c405df3abb827c80ffd60285788541e62fa6fdd8335498084a9f95` 不变。失败卡上的三个 FAT 载荷文件已逐字更新并读回,配置区摘要写前写后一致。
## 自动验证
- SSH/镜像聚焦测试:11 项通过。
- 完整 Python:304 项通过、8 项跳过。
- 前端:55 项通过,全部 JavaScript 与相关 shell 语法检查通过。
- 新正式 IMG 与发布记录摘要一致;旧摘要已失效,不得继续使用。
本记录不包含账户、密码、Wi-Fi、IP、主机密钥内容或其他设备身份值。修复后的真实首次启动、SSH、sudo、网页和再次重启仍需重新验收。