Привет, столкнулся с проблемой шифрования (собственно, она описана в заголовке). Установил OPensuse Leap 42.1 В установщике была галочка "зашифровать всё в корень"111 ну или как-то так. ПРедложили ввести пароль, ну я думаю,мол потом поменяю, а н не тут-то было. Использовал cryptsetup luksAddKey, а загрузчику по барабану. Добавил в граб опцию, rd.luks.key=/путь к файлу ключа. Затёр нулевой keyslot (я думал, именно он используется по умолчанию) и добавил в него свой ключ вместо того, что там было, боялся, система не стартанёт, но нет! Ей пофигу! Как в opensuse это всё работает? Не понимаю.
Мне помогли на англоязычном форуме, продублирую решение здесь, уверен, оно пригодится многим.
Что я сделал, чтобы решить проблему шифрования по ключу всего диска (за исключением /boot):
Стандартная установка Opensuse 42.1, в процессе жмём галочки “прелдложение на базе LVM” и “зашифровать …” надеюсь, это проблем не вызовет:
http://i.piccy.info/i9/24b8e65fe49aed993c11cc126ad38018/1482927589/4850/1103912/IMG_4217_240.jpg](http://piccy.info/view3/10686220/3bbf0ddb0dce70d52a42aab18a3c3b72/)http://i.piccy.info/a3/2016-12-28-12-19/i9-10686220/240x180-r/i.gif](http://i.piccy.info/a3c/2016-12-28-12-19/i9-10686220/240x180-r)
Вас попросят указать пароль, укажите что-то легко запоминающееся, т.к. потом смените его на файл-ключ.
После установки грузимся с лайв-флешки или с того же установочного носителя, с которого производилась установка opensuse, но вместо установки выбираем “Rescue System”, всёравно все действия дальше будут в консоли.
создаём наш файл-ключ:
dd if=/dev/random of=/mnt/whatever/mykey bs=1 count=256
говорю сразу, я не смог стандартно решить проблему, никакие мануалы (даже официальные) не помогли, поэтому у меня в качестве ключа выступал файл устройства, так что в моём случае можно сделать сразу:
dd if=/dev/random of=/dev/mmcblk0 bs=1 count=256
mmcblkp0 это SD-карта, которая вставляется отдельно каждый раз, когда включается компьютер, у вас это может быть флешка или какой-то другой носитель.
добавляем этот файл-ключ к нашему устройству:
cryptsetup luksAddKey /dev/sda3 --key-file /dev/mmcblk0 --keyfile-size 256
в моём случае /dev/sda3 это раздел, на который водружен шифрованый LVM, у вас он скорее всего будет такой же, если установка стандартная.
Далее, примонтируете ваш /boot и правите строку загрузчика:
mount /dev/sda1 /mnt
vim /mnt/gub2/grub.cfg
Вместо vim ваш любимый текстовый редактор $)
Опции, которые вам нужно добавить в параметры ядра:
luks.uuid=502cca08-a4ff-4592-a5cc-ec4ef6650200 # это UUID /dev/sda3 а не LVM раздела!
luks.key=/dev/mmcblk0
luks.options=keyfile-size=256
Посмотреть блочные устройства и их UUID можно командами:
lsblk
blkid
Теперь нужно удалить старый ключ-пароль, чтобы узнать точно, где кто делаем:
cryptsetup luksOpen -v /dev/sda3 anyname
Вас попросят ввести пароль и после открытия будет выдана строка:
Keyslot X unlocked
Скорее всего это будет slot 0 но всегда нужно проверять, что делаешь, если вам дорога информация %)
Проверить, какие keyslotы активны, можно через:
crypsetup luksDump /dev/sda3
Удаляем лишний слот:
cryptsetup luksKillSlot /dev/sda3 0 --key-file /dev/mmcblk0 --keyfile-size 256
где 0 - номер кейслота, который нужно затереть
Теперь у вас только один способ расшифровать этот криптоконтейнер-ваш файл-ключ.
Есть способы указывать файл, расположенный на каком-то носителе и при это не занимающий весь носитель целиком (мне не жалко под это 2 ГБ старой флешки, но кому-то это будет неудобно)
Как это сделать, я не разобрался. Пока так. Вопросы, пожелания и прочее, жду с нетерпением!
Оригинальное обсуждение: https://forums.opensuse.org/showthread.php/521898-An-encrypted-root-with-a-keyfile