安装加密的 Debian 13(Trixie),推荐配置 dropbear-initramfs 来通过 SSH 远程输入解密密码。(比登录去服务商面板用vnc方便)
以下是详细的操作指南:
一、 安装阶段(Debian Installer)
启动 ISO 或者netboot开始安装,建议选择 Text Install
1. 磁盘分区 (关键步骤)
在分区界面,请按以下方案操作:【更精细的方案可以选手动】
- 方案选择:选择 Guided - use entire disk and set up encrypted LVM(向导 - 使用整个磁盘并设置加密 LVM)。
分区结构:
/boot分区:必须是非加密的,否则引导程序无法启动。- LVM 卷组:剩下的空间会被加密。
- 密码设置:设置密码。注意: 可以不是建议的20位以上 但也别太简单。 这个以后在系统里改。
2. 软件选择
- 核心系统:仅勾选
SSH server和standard system utilities。
二、 配置远程解锁 (Dropbear)
安装完成后重启,你会发现机器停在等待密码的界面。此时必须通过 VNC 进入系统,然后配置 SSH 远程解锁,否则以后每次重启都要开 VNC。
1. 安装 dropbear-initramfs
进入系统后执行:
Bash
apt update
apt install dropbear-initramfs2. 配置公钥
为了安全,建议仅使用 Key 登录。编辑 /etc/dropbear/initramfs/authorized_keys,加入你的公钥:
Bash
nano /etc/dropbear/initramfs/authorized_keys3. 配置网络(针对静态 IP)【如果是仅v6,情况很可能复杂一些,涉及v6的分配方式和启动顺序】
如果你的 VPS 不是通过 DHCP 获取 IP,需要手动指定 initramfs 启动时的网络。编辑 /etc/initramfs-tools/initramfs.conf:
找到 IP= 行,按以下格式填写:
IP=[装置IP]::[网关]:[子网掩码]:[主机名]:[网卡名]:off例如:
IP=192.168.1.100::192.168.1.1:255.255.255.0:debian-vps:eth0:off
4. 更新 initramfs
Bash
update-initramfs -u三、 如何远程解锁?
以后重启 VPS 时,在你的本地终端输入:
Bash
ssh root@your-ip -p 2222 -i /YOUR-KEY-FILE
#22建议修改,避免你的终端总是提示psk key冲突。注意:Initramfs 下的 Dropbear 默认通常监听 22 端口。如果与主系统冲突,可以在/etc/dropbear/initramfs/dropbear.conf中通过DROPBEAR_OPTIONS="-p 2222"修改。
登录后执行以下命令并输入密码:
Bash
cryptroot-unlock解密成功后,Dropbear 会自动断开,随后主系统的 SSH 服务会接管。
四、 资源优化建议 针对CPU和内存局限
由于磁盘空间较小且 CPU 为单核,建议进行以下优化:
1. 调整 Swap
加密磁盘上的 Swap 性能损耗较大。如果 2GB 内存不够用,建议使用 Zram 代替物理 Swap 分区。(如果只有1G,那还是建议增加个swapfile或分区)
Bash
apt install zram-tools2. 磁盘挂载参数
编辑 /etc/fstab,在挂载选项中加入 noatime 以减少加密磁盘的写入开销:
| 挂载点 | 选项 |
| / | defaults,noatime |
3. 优化配置:编辑 /etc/default/zramswap:
ALGO=zstd(平衡压缩率与速度)。PERCENT=50(将比如2G内存的一半,即 1GB,划给 zram 使用,压缩后可提供约 2GB+ 的虚拟空间)。
有的vps服务商不能在grub环节获得ip地址,需要等待系统启动。那么dropbear就会连接不上。
最简单的是把ip设置加入grub的启动项。(仅v6的情况可能更复杂)
编辑/etc/default/grub
1. IPv4 的标准写法
在 /etc/default/grub 中,IPv4 的完整格式为:
# 格式:ip=<客户端IP>:<NFS服务器IP(留空)>:<网关IP>:<子网掩码>:<主机名>:<网卡名>:<自动配置(off)>
GRUB_CMDLINE_LINUX_DEFAULT="quiet net.ifnames=0 biosdevname=0 ip=1.2.3.4::1.2.3.1:255.255.255.0:your-hostname:eth0:off"255.255.255.0:这里必须写完整的掩码。如果你的掩码是/32(某些云服务商提供单 IP 路由),则写255.255.255.255。- 双冒号
:::中间空出的位置是给 NFS 服务器用的,在远程解锁场景中必须留空并保持两个冒号。
2. IPv4 vs IPv6 写法对比
由于你这台 1C2G 的机器配置了加密磁盘,建议参考下表确保配置准确:
| 类型 | 掩码/前缀格式 | 示例配置片段 |
|---|---|---|
| IPv4 | 点分十进制 | ip=1.2.3.4::1.2.3.1:255.255.255.0:hb1:eth0:off |
| IPv6 | 数字前缀 | ip=[2a07...]::[2a07...]:64:your-hostname:eth0:off |
更新配置:修改完 /etc/default/grub 后,务必执行:
/usr/sbin/update-grub && \
/usr/sbin/update-initramfs -u修改 LUKS 密码
进入系统后(不再是 initramfs 提示符),打开终端执行以下命令:
1. 确认加密设备名称
Bash
lsblk你应该能看到 vda3 下方挂着一个类型为 crypt 的设备。
2. 添加新密码
LUKS 支持多个密码槽(Keyslots)。建议先添加新密码,确认无误后再删除旧密码,防止操作失误导致无法开机。
Bash
# 系统会要求你先输入一个已有的旧密码进行验证,然后输入两次新密码
sudo cryptsetup luksAddKey /dev/vda33. 测试新密码(可选但建议)
如果你想确保新密码生效了:
Bash
# 这不会改变任何东西,只是测试密码是否能正确打开设备
sudo cryptsetup luksDump /dev/vda3检查输出中的 Key Slot 是否多了一个被占用的位置。
4. 删除旧密码(可选)
如果你确定不再需要旧密码,或者担心旧密码泄露:
Bash
sudo cryptsetup luksRemoveKey /dev/vda3系统会提示你输入要删除的那个密码。千万别把刚设的新密码给删了。
第三步:同步更新(重要)
由于你使用了 Dropbear 进行远程解锁,修改完磁盘密码后,最好更新一下 initramfs 镜像,确保引导环境识别最新的加密状态:
Bash
sudo update-initramfs -u
sudo update-grub如果你完全忘记了旧密码...
- 没有后门: LUKS 加密如果没有旧密码或备份的 Header Key,是无法重置密码的。
- 唯一办法: 你需要使用 VPS 控制面板的 "Reinstall"(重装系统)功能,这会导致
vda3上的所有数据丢失。
在 LUKS 加密体系中,Header(头部) 是整个加密分区的“大脑”。
当你给磁盘设置密码时,系统并不是直接用你的密码去加密整个硬盘的数据。相反,它会随机生成一个非常复杂的 Master Key(主密钥) 来加密数据,而你的用户密码只是用来解锁这个 Master Key 的“钥匙”。
什么是 LUKS Header?
Header 存储在加密分区的开头(通常是前几个 MB),它包含了:
- 加密算法信息: 用的是 AES-256 还是其他方式。
- Key Slots(密码槽): LUKS 最多支持 8 个槽位,每个槽位可以存放一个被加密过的 Master Key 副本。
- Master Key 的加密副本: 只有输入正确的用户密码,才能解开槽位拿到 Master Key。
为什么备份它很重要?
如果这个 Header 损坏了(比如由于意外断电、磁盘坏道,或者你执行了误操作),即使你记得密码,里面的数据也永远无法找回。因为 Master Key 丢失了,整个硬盘就成了一堆无法解密的随机垃圾字符。
“备份 Header Key” 实际上就是把这个头部的元数据提取出来存成一个独立文件。
如何备份和恢复?
如果你现在还能进系统(或者以后为了安全),你应该这样做:
1. 备份(导出)
将 vda3 的头部备份到外部存储(千万别存在这个加密盘里!):
Bash
sudo cryptsetup luksHeaderBackup /dev/vda3 --header-backup-file my_vda3_header.img2. 恢复(导入)
如果有一天 Header 坏了,或者你想把密码重置回备份时的状态:
Bash
sudo cryptsetup luksHeaderRestore /dev/vda3 --header-backup-file my_vda3_header.img⚠️⚠️⚠️
- 如果你有备份: 万一你把密码改乱了,或者改完后发现新密码进不去,你可以用备份文件“强行”恢复回之前的状态。
- 如果你没有备份: 那么修改密码时一定要非常小心。建议先用
luksAddKey增加一个新密码,确认能开机后,再删除旧的。
更新一个配置
nano /etc/dropbear/initramfs/dropbear.confDROPBEAR_OPTIONS="-I 180 -j -k -p 2222 -c cryptroot-unlock"