У меня есть сервер Debian Wheezy, который некоторое время работал с зашифрованным диском. Пароль для зашифрованного диска ( /dev/sda5
) был потерян, когда мой файл зашифрованного пароля был поврежден.
Я хотел бы иметь возможность перезагрузить этот сервер, но для этого, конечно, потребуется этот пароль. Поскольку диск явно находится в расшифрованном состоянии, есть ли способ изменить пароль, не зная старого?
cryptsetup luksChangeKey /dev/sda5
требует пароль тома.
Я мог бы, конечно, rsync
все отключить и восстановить, но я бы хотел этого избежать. Я просмотрел память ( #cat /dev/mem | less
), но не смог ее найти (что очень хорошо!).
Ответы:
Да, вы можете сделать это, получив доступ к главному ключу во время расшифровки тома.
Быстро и грязно добавить новую фразу-пароль:
device
иvolume_name
должен быть установлен соответствующим образом.volume_name
имя расшифрованного тома, который вы видите в/dev/mapper
.Объяснение:
Тома LUKS шифруют свои данные с помощью мастер-ключа. Каждая добавленная вами парольная фраза просто хранит копию этого мастер-ключа, зашифрованную этой парольной фразой. Поэтому, если у вас есть мастер-ключ, вам просто нужно использовать его в новом слоте ключа.
Давайте разберем команду выше.
Это сбрасывает кучу информации об активно дешифрованном томе. Вывод выглядит так:
Поле № 5 является главным ключом.
Не собираюсь показывать выходные данные этого, поскольку это двоичные данные, но для этого нужно получить главный ключ для тома, а затем преобразовать его в необработанные двоичные данные, которые понадобятся позже.
Это говорит cryptsetup добавить новый ключ к тому. Обычно для этого действия требуется существующий ключ, однако мы используем его,
--master-key-file
чтобы сообщить, что вместо этого мы хотим использовать мастер-ключ. Это оболочка командной подстановки & перенаправления. Он в основном выполняет все внутри, отправляет вывод в канал, а затем заменяет путь к этому каналу.<(...)
<(...)
Таким образом, вся команда - это всего лишь одна строка для сжатия нескольких операций.
источник
linear
, то это не открытый том LUKS (неверное значениеvolume_name
в предоставленной команде). Открытый том LUKS будет иметьcrypt
в 3-м поле. Вcryptsetup luksOpen /dev/foo bar
,volume_name
значение будетbar
./dev/mapper
названиемluks-.....
. Это том, который вам нужно использовать, а не LVM, сопоставленный логический том.dmsetup table
изменился. По крайней мере, для меня мастер-ключ показан в столбце$6
.