如何在启动过程早期打开端口以通过 SSH 解锁 LUKS

如何在启动过程早期打开端口以通过 SSH 解锁 LUKS

我有一个运行 Debian 7 的完全加密的服务器,并设置了 dropbear 和 busybox 以通过 SSH 解锁 LUKS 容器(如所述在本教程中并在这个 U&L 答案)。

不幸的是,每当我在重新启动时尝试通过 SSH 连接到服务器(通过 LAN)时,都会收到“连接被拒绝”错误。我已经尝试过telnet默认nmap端口(22),但都说该端口已关闭。

服务器有一条ufw规则接受来自 LAN 的所有流量:

Anywhere         ALLOW       192.168.1.0/24

我尝试更改 dropbear 侦听的端口,/etc/defaults/dropbearssh仍然telnet被拒绝连接1

如何确保端口在启动过程的该阶段打开,以便我可以连接以解锁 LUKS 容器?

禁用防火墙没有什么区别:nmap显示所有端口仍然关闭。

更新2/14

我添加break=premount到内核行并在 initramfs 中进行了研究。dropbear已启动,但网络正常不是在那一点上。退出后,网络启动并继续启动,直到提示解锁 LUKS 设备。

此时,网络已启动,主机已分配了正确的 IP 地址,但端口 22 仍处于关闭状态。

/etc/initramfs-tools/intiramfs.conf我使用的IP线路是:

export IP=192.168.1.200::192.168.1.1:255.255.255.0::eth0:off

与中的指示一致,/usr/share/doc/cryptsetup/README.remote.gz我尝试仅添加设备选项,但这不足以启动网络并获得 dhcp 租约。

2014 年 10 月 11 日更新

卡尔的回答是所需要的:设置/etc/initramfs-tools/conf.d/cryptroot是关键:

target=md1_crypt,source=UUID=8570d12k-ccha-4985-s09f-e43dhed9fa2a

本指南也被证明更加最新和相关(并且成功)。

答案1

几周前我遇到了同样的问题(Debian Wheezy 7.6),经过几天的故障排除后,我发现缺少一个配置文件,这导致 init-top 上的 cryptroot 脚本无法正确运行,因此它没有停止通过 ssh 询问密码,在序列末尾杀死 dropbear (init-bottom)。

配置文件被调用cryptroot并且应该位于/etc/initramfs-tools/conf.d/ 如果我没有记错的话,配置文件应该在安装过程中自动创建(我只阅读了一篇讨论该配置文件的教程),但不知何故它没有(在物理服务器和中进行了测试)虚拟机、相同的操作系统和版本)

我花了几次尝试才正确配置它,因为当时我找不到正确的语法。我的 cryptroot 配置文件如下:

target=crypt-root,source=/dev/vg0/root,lvm=root

创建配置文件后,只需更新 initramfs 并重试:

update-initramfs -u

答案2

dropbear(ssh 服务器)应该在启动阶段很早就启动 - 早于init(rcN.d)序列和防火墙初始化脚本;甚至早于 / 被安装(它也被加密,对吧?)。因此initramfs,涉及到由引导加载程序为内核加载的预/用户区。该图像是update-initramfs -u通过 的内容(重新)生成的/etc/initramfs-tools/,包括 中的 dropbear 配置/etc/initramfs-tools/etc/dropbear/。要使用 dropbear 配置,请使用该配置。

因此,有几点需要检查:

  • dropbear 未启动:它尚未很好地插入 initramfs 序列;
  • 默认防火墙拒绝所有。

答案3

主题行错误。问题不在于端口关闭,而在于端口未绑定。 SSHd 尚未启动;这就是您无法连接到它的原因。

相关内容