Skip to content

[Bug] 26.08.0-trunk 镜像缺少 OPENSSHD_REGENERATE_HOST_KEYS,首启不生成 SSH host key,sshd 无法启动(无 HDMI 设备相当于变砖) #3560

@naughtyGitCat

Description

@naughtyGitCat

受影响镜像

  • Armbian_26.08.0_rockchip_bdy-g18-pro_trixie_6.18.35_server_2026.06.12.img.gz
    (Release: Armbian_trixie_arm64_server_2026.06,开机横幅显示 Armbian-unofficial 26.08.0-trunk)
  • 设备:彼度云 BDY-G18-Pro (rk3568),该机型没有 HDMI 输出
  • 对照:同一 Release 里的 Armbian_26.05.0_rockchip_alark35-3500_*(另一台 rk3568)无此问题

现象

刷入后系统正常启动、DHCP 正常拿 IP,但 22 端口 connection refused。多次冷启动结果一致(确定性 bug,非偶发)。

由于 BDY-G18-Pro 没有 HDMI,普通用户刷完即失联,只能拆壳接 TTL(1500000)排查,体验上等同于变砖。

根因分析(已在串口下定位)

  1. journalctl -u ssh 显示:
sshd[550]: sshd: no hostkeys available -- exiting.
ssh.service: Start request repeated too quickly.
Failed to start ssh.service - OpenBSD Secure Shell server.
  1. /etc/ssh/ 下没有任何 ssh_host_* 文件——镜像构建时删除了 host key(这是正确的安全实践),预期由首启脚本重新生成。
  2. /usr/lib/armbian/armbian-firstrun 第 50 行的生成逻辑被变量守着:
if [[ "${OPENSSHD_REGENERATE_HOST_KEYS}" = true ]]; then
    rm -f /etc/ssh/ssh_host*
    dpkg-reconfigure openssh-server >/dev/null 2>&1
    service ssh restart
  1. 而该镜像的 /etc/armbian-release不存在 OPENSSHD_REGENERATE_HOST_KEYS 这个变量(grep OPENSSHD /etc/armbian-release 无结果)→ 条件不成立 → 走了 "SSH host keys unchanged" 分支 → key 永远缺失 → sshd 永远起不来。

临时解决(已验证)

串口登录后执行:

ssh-keygen -A && systemctl restart ssh

立即恢复,且永久有效。

修复建议

  1. 构建管线确保把 OPENSSHD_REGENERATE_HOST_KEYS=true 写入 trunk 镜像的 /etc/armbian-release;
  2. 或者(更防御性的做法)armbian-firstrun 在检测到 /etc/ssh/ 下没有任何 host key 时,无视该变量直接生成——"有变量才补钥匙"对无显示输出的设备来说失败代价太高。

English summary

Image Armbian_26.08.0_rockchip_bdy-g18-pro_trixie_6.18.35 (26.08.0-trunk) ships without SSH host keys, and /etc/armbian-release is missing OPENSSHD_REGENERATE_HOST_KEYS, so the regeneration branch in armbian-firstrun (line ~50) never runs. sshd fails with "no hostkeys available -- exiting" on every boot. Since BDY-G18-Pro has no HDMI, the device is effectively bricked for headless users; recovery required a TTL console (1500000 baud) and ssh-keygen -A. Suggested fix: write OPENSSHD_REGENERATE_HOST_KEYS=true into /etc/armbian-release during trunk builds, or make firstrun regenerate unconditionally when no host keys exist.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationsupportThis need is supported

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions