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

jas*_*yan 11 networking ssh luks

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

不幸的是,每当我尝试在重新启动时通过 SSH 连接到服务器(通过 LAN)时,我都会收到“连接被拒绝”错误。我曾尝试telnetnmap到默认端口(22),并都表示端口被封闭。

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

Anywhere         ALLOW       192.168.1.0/24
Run Code Online (Sandbox Code Playgroud)

我曾试图改变端口上监听dropbear/etc/defaults/dropbearsshtelnet仍然拒绝连接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
Run Code Online (Sandbox Code Playgroud)

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

更新 11/10/14

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

target=md1_crypt,source=UUID=8570d12k-ccha-4985-s09f-e43dhed9fa2a
Run Code Online (Sandbox Code Playgroud)

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

小智 3

几周前我遇到了同样的问题(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
Run Code Online (Sandbox Code Playgroud)

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

update-initramfs -u
Run Code Online (Sandbox Code Playgroud)