Шифрование диска LUKS в Linux без риска потерять данные
Шифрование LUKS надёжно, пока у вас есть пароль и цел заголовок раздела. Поэтому сразу после настройки добавьте второй ключ или ключ восстановления, снимите копию заголовка командой cryptsetup luksHeaderBackup и храните оба вне зашифрованного диска.

Содержание
Как устроен LUKS и почему ключ можно потерять
LUKS шифрует раздел целиком одним мастер-ключом. Пароль, который вы вводите при загрузке, этот ключ не содержит: он только открывает одну из ячеек в заголовке раздела, где мастер-ключ хранится в зашифрованном виде. Таких ячеек в LUKS2 до 32, и каждая может открываться своим паролем, ключевым файлом, TPM или аппаратным токеном.
Из этого следуют две вещи, о которых обычно узнают слишком поздно:
- Если вы забыли единственный пароль, данные не восстановить ничем. Обходных путей нет, это и есть смысл шифрования.
- Если повреждён заголовок раздела (первые 16 МБ у LUKS2), данные потеряны даже при правильном пароле. Хватит неудачной команды
dd, переразметки диска в другой ОС или сбоя на старом SSD.
Поэтому настройка шифрования в моём понимании состоит из трёх шагов: зашифровать, добавить запасной способ открыть раздел и сохранить копию заголовка. Без последних двух шифрование превращается в бомбу замедленного действия.
Как узнать, что и чем зашифровано
Если систему ставил установщик с галочкой "зашифровать диск", сначала найдите раздел LUKS. У него тип crypto_LUKS:
lsblk -f
sudo cryptsetup isLuks -v /dev/nvme0n1p3
sudo cryptsetup luksDump /dev/nvme0n1p3
В выводе luksDump смотрите версию (LUKS1 или LUKS2), список занятых ячеек в разделе Keyslots и токены. Ubuntu, Fedora и Debian последние годы создают LUKS2 с функцией формирования ключа argon2id. Здесь и дальше вместо /dev/nvme0n1p3 подставляйте свой раздел, ошибиться устройством в этих командах дорого.
В Ubuntu и Fedora поверх LUKS обычно лежит LVM с томами для корня и swap, в Fedora внутри может быть Btrfs. Для шифрования это не важно: все операции с ключами делаются над разделом LUKS, а не над томами внутри.
Шифрование нового диска или раздела
Зашифровать уже установленную систему на месте нельзя без риска. Для системного диска проще переустановить ОС с включённым шифрованием в установщике. А вот второй диск для данных или внешний накопитель шифруется за пару минут. Все данные на разделе будут удалены.
# пакет cryptsetup уже есть почти везде, если нет:
sudo apt install cryptsetup # Debian, Ubuntu
sudo dnf install cryptsetup # Fedora
sudo pacman -S cryptsetup # Arch
# создать LUKS2 и открыть его
sudo cryptsetup luksFormat --type luks2 /dev/sdb1
sudo cryptsetup open /dev/sdb1 data
sudo mkfs.ext4 /dev/mapper/data
sudo mkdir -p /mnt/data
sudo mount /dev/mapper/data /mnt/data
Закрывается раздел в обратном порядке: sudo umount /mnt/data, затем sudo cryptsetup close data. Для автоматического открытия при загрузке добавьте строку в /etc/crypttab и точку монтирования в /etc/fstab:
# UUID раздела LUKS, не файловой системы внутри
sudo blkid -s UUID -o value /dev/sdb1
# /etc/crypttab
data UUID=ваш-uuid none luks
# /etc/fstab
/dev/mapper/data /mnt/data ext4 defaults 0 2
На внешних дисках KDE и GNOME сами спросят пароль при подключении, crypttab для них не нужен. Про разметку и выбор файловой системы есть статья о разделах и файловых системах.
Резервный ключ: вторая ячейка на случай забытого пароля
Запасной ключ добавляется в свободную ячейку, основной пароль при этом продолжает работать. Есть два удобных варианта.
Второй пароль через cryptsetup
Команда спросит любой действующий пароль, затем новый. Новый можно записать на бумагу и убрать в надёжное место:
sudo cryptsetup luksAddKey /dev/nvme0n1p3
Ключ восстановления через systemd-cryptenroll
Утилита из systemd сама генерирует длинный случайный ключ, удобный для ручного ввода, и показывает его на экране вместе с QR-кодом. Работает только с LUKS2:
sudo systemd-cryptenroll --recovery-key /dev/nvme0n1p3
# посмотреть, какие способы входа записаны
sudo systemd-cryptenroll /dev/nvme0n1p3
Ключ восстановления вводится там же, где обычный пароль. Храните его отдельно от компьютера: в менеджере паролей на телефоне, в сейфе, у человека, которому доверяете. Распечатка в сумке ноутбука защищает только от забывчивости, не от кражи.
Разблокировка через TPM
Если хочется загружаться без ввода пароля, можно привязать раздел к TPM 2.0 командой sudo systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=7 /dev/nvme0n1p3. Регистр PCR 7 отражает состояние Secure Boot, и при его изменении TPM откажется отдавать ключ. Именно тогда понадобится ключ восстановления, поэтому TPM без запасного ключа включать нельзя. Подробнее о связке с подписью драйверов в статье про Secure Boot и драйверы.
Резервная копия заголовка LUKS
Копия заголовка защищает от второй беды: физического повреждения начала раздела. Снимается она одной командой, файл весит 16 МБ для LUKS2:
sudo cryptsetup luksHeaderBackup /dev/nvme0n1p3 --header-backup-file /root/luks-header-nvme0n1p3.img
# проверить, что копия читается
sudo cryptsetup luksDump /root/luks-header-nvme0n1p3.img
Сразу перенесите файл с этого диска: копия, лежащая на том же зашифрованном разделе, бесполезна. Подойдёт флешка в ящике стола или зашифрованное облачное хранилище. Заодно сохраните вывод sudo fdisk -l: начальный и конечный сектор раздела пригодятся, если когда-нибудь придётся восстанавливать и таблицу разделов.
Копия заголовка вместе со старым паролем открывает раздел, даже если пароль потом сменили. Если пароль утёк, мало его сменить: удалите и старые копии заголовка, иначе утечка сохраняет силу. После каждого изменения ключей снимайте свежую копию и уничтожайте прежние.
Восстановление заголовка перезаписывает все ячейки ключей теми, что были в копии:
sudo cryptsetup luksHeaderRestore /dev/nvme0n1p3 --header-backup-file /root/luks-header-nvme0n1p3.img
Перед этим проверьте, что пароль подходит к копии, не трогая сам диск: sudo cryptsetup open --test-passphrase --header /root/luks-header-nvme0n1p3.img /dev/nvme0n1p3. Справка по всем командам есть на странице dm-crypt в ArchWiki.
Шпаргалка по управлению ключами
| Задача | Команда |
|---|---|
| Сменить пароль | cryptsetup luksChangeKey /dev/X |
| Добавить пароль | cryptsetup luksAddKey /dev/X |
| Удалить пароль, введя его | cryptsetup luksRemoveKey /dev/X |
| Очистить ячейку по номеру | cryptsetup luksKillSlot /dev/X 2 |
| Добавить ключ восстановления | systemd-cryptenroll --recovery-key /dev/X |
| Удалить привязку к TPM | systemd-cryptenroll --wipe-slot=tpm2 /dev/X |
| Копия заголовка | cryptsetup luksHeaderBackup /dev/X --header-backup-file файл |
Перед luksKillSlot и luksRemoveKey убедитесь по выводу luksDump, что останется хотя бы одна рабочая ячейка, которую вы точно помните. Удалить последнюю ячейку значит потерять доступ навсегда.
Система не загружается: открываем раздел с Live USB
Если после обновления или сбоя загрузчик не доходит до запроса пароля, данные никуда не делись. Загрузитесь с любого live-образа Ubuntu или Fedora, откройте терминал и подключите раздел вручную:
sudo cryptsetup open /dev/nvme0n1p3 cryptroot
# если внутри LVM
sudo vgchange -ay
lsblk
sudo mount /dev/mapper/ubuntu--vg-ubuntu--lv /mnt
Имя тома LVM у вас будет своим, его покажет lsblk. Дальше можно скопировать файлы на внешний диск или войти в систему через chroot и починить загрузчик, как описано в статье о восстановлении GRUB.
Если cryptsetup open отвечает, что устройство не является LUKS, а пароль точно верный, повреждён заголовок. Это тот случай, ради которого делалась копия: восстановите её командой luksHeaderRestore и повторите. Без копии остаются только профессиональные лаборатории, и шансы там невелики.
Шифрование не заменяет резервные копии
LUKS защищает данные от чужих глаз при краже ноутбука, но не от отказа SSD, удаления файла или вымогателя. Резервные копии нужны в любом случае, и делать их лучше на уровне файлов: Borg и Restic шифруют архив сами, так что копия на внешнем диске или в облаке остаётся закрытой. Схема с тремя копиями на двух носителях описана в статье про Borg и Restic.
Посекторный образ зашифрованного раздела тоже возможен, но он занимает полный объём раздела и без копии заголовка и пароля бесполезен. Для системы с LUKS разумнее держать файловые копии плюс копию заголовка и ключ восстановления в двух разных местах.
Частые вопросы
Можно ли восстановить данные LUKS без пароля?
Нет. Без действующего пароля, ключевого файла, ключа восстановления или TPM мастер-ключ не извлечь. Поэтому запасной ключ нужно добавить заранее.
Где хранить копию заголовка LUKS?
Вне зашифрованного диска: на отдельной флешке, во втором месте хранения резервных копий или в зашифрованном облаке. После смены паролей старые копии лучше уничтожить.
Чем LUKS1 отличается от LUKS2?
LUKS2 поддерживает до 32 ячеек ключей, токены для TPM и FIDO2, функцию argon2id и резервную копию метаданных внутри заголовка. Новые установки используют LUKS2.
Безопасно ли включать разблокировку через TPM?
Это удобно и защищает от снятия диска, но ноутбук целиком загрузится до экрана входа. Обязательно держите ключ восстановления: после обновления прошивки или Secure Boot TPM может перестать отдавать ключ.
Как сменить пароль шифрования диска?
Командой sudo cryptsetup luksChangeKey с указанием раздела. После этого снимите новую копию заголовка и удалите старые.
Документация и источники
- dm-crypt/Device encryption, ArchWiki, 2026
- cryptsetup-luksHeaderBackup(8), cryptsetup project, man7.org, 2026
- systemd-cryptenroll(1), freedesktop.org, systemd, 2026
Читайте также
- Резервные копии в Linux: Borg или Restic и схема 3-2-1 дома
- Secure Boot и Linux: установка драйверов без отключения защиты
- Как восстановить загрузчик GRUB после Windows или неудачного обновления
- Разметка диска в Linux: какие разделы нужны и какую ФС выбрать
- Как установить Linux рядом с Windows 11: разметка, BitLocker, GRUB
Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.