我有一个运行 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/dropbear
但ssh
仍然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 尚未启动;这就是您无法连接到它的原因。