You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian 12预seed late_command配置sshd_config遇阻求助

Debian 12预seed配置问题解决建议

一、late_command未执行的修复

你的猜测是对的,d-i debian-installer/exit/reboot boolean false会导致安装器跳过重启流程,直接进入busybox救援shell,而late_command的执行时机是安装完成、准备重启前的阶段,因此该配置会阻止late_command触发。

解决方法二选一:

  1. 移除debian-installer/exit/reboot boolean false配置,让安装器正常重启,late_command会在重启前自动执行,完成SSH配置后系统重启,重启后即可通过root SSH登录。
  2. 保留“不自动重启”的需求,但调整配置让late_command执行后再手动终止重启:
    d-i debian-installer/exit/reboot boolean true
    d-i preseed/late_command string \
      in-target sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config; \
      in-target systemctl restart sshd; \
      in-target ip a > /target/root/initial_ip.txt; \
      halt
    
    这里halt会让安装器在执行完SSH配置后停止系统,代替自动重启。

二、dpkg-divert警告的处理

你在busybox控制台直接执行命令时出现的警告,是因为安装器环境的start-stop-daemon被dpkg-divert重定向,和late_command无关——late_command用in-target前缀,是在目标系统的chroot环境中执行命令,不会触发该警告。

如果需要在busybox控制台手动操作目标系统,所有命令前都加上in-target前缀,比如执行in-target systemctl restart sshd而非直接systemctl restart sshd,即可避免该警告。

三、优化后的SSH配置late_command

注意到默认的SSH端口22已经是启用状态,无需修改#Port 22这一行;另外Debian 12中SSH服务名是sshd而非ssh,优化后的命令更简洁高效:

d-i preseed/late_command string \
  in-target sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config; \
  in-target systemctl restart sshd; \
  in-target ip a > /target/root/initial_ip.txt

最后一行将IP信息保存到目标系统的root目录,方便你后续查看机器IP进行SSH连接。

内容的提问来源于stack exchange,提问作者user21122267

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 00:05:18