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触发。
解决方法二选一:
- 移除
debian-installer/exit/reboot boolean false配置,让安装器正常重启,late_command会在重启前自动执行,完成SSH配置后系统重启,重启后即可通过root SSH登录。 - 保留“不自动重启”的需求,但调整配置让
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; \ halthalt会让安装器在执行完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
相关产品推荐
相关产品推荐

