Debian и Ubuntu поставляют скрипт кэширования паролей decrypt _keyctl с пакетомcryptsetup .
Сценарий
decrypt _keyctl предоставляет один и тот же пароль для нескольких зашифрованных целей LUKS, избавляя вас от необходимости вводить его несколько раз. Его можно включить вcrypttabс опцией keyscript=decrypt_keyctl
. Один и тот же пароль используется для целей, которые имеют одинаковый идентификатор в поле ключевого файла . При загрузке пароль для каждого идентификатора запрашивается один раз.
Пример crypttab:
Сценарий decrypt_keyctl
зависит от пакета keyutils
(, который только предлагается и поэтому не обязательно должен быть установлен ).
После того, как вы обновите свой cryptab , вам также потребуется обновить initramfs, чтобы изменения вступили в силу. Используйтеupdate-initramfs -u
.
Полный файл readme для расшифровки _keyctl находится в/usr/share/doc/cryptsetup/README.keyctl
К сожалению, в настоящее время это не работает в системах Debian, использующих systemd init из-заошибки(другие системы инициализации не должны затрагиваться ). Из-за этой ошибки systemd второй раз запрашивает пароль, что делает невозможным удаленную разблокировку через ssh. Debianсправочная страница crypttabпредлагает в качестве обходного пути использовать параметр initramfs
для принудительной обработки на этапе загрузки initramfs. Итак, чтобы обойти эту ошибку, пример для /etc/crypttab в Debian
Если decrypt _keyctrl не предусмотрен вашим дистрибутивом, устройство можно разблокировать с помощью ключевого файла в зашифрованной корневой файловой системе.Это когда корневая файловая система может быть разблокирована и смонтирована раньше любого другого зашифрованного устройства.
LUKS поддерживает несколько слотов для ключей. Это позволяет альтернативно разблокировать устройство с помощью пароля, если файл ключа недоступен/утерян.
Сгенерируйте ключ со случайными данными и установите его права доступа только для чтения владельцем, чтобы избежать его утечки. Обратите внимание, что файл ключа должен находиться в корневом разделе, который разблокируется первым.
dd if=/dev/urandom of= bs=1024 count=1
chmod u=rw,g=,o=
Добавьте ключ на устройство LUKS
cryptsetup luksAddKey
Настройте crypttab для использования файла ключа. Первая строка должна быть корневым устройством, так как устройства разблокируются в том же порядке, что и в crypttab . Используйте абсолютные пути для ключевых файлов.
Скорее всего потому, что код для консоли написан для чтения непосредственно с клавиатуры -устройства (файла в/dev/input/by-path
)вместо чтения из /dev/stdin
. При прямом чтении с устройства раскладки клавиатуры игнорируются.
Если это действительно причина, вы должны заметить, что все остальные клавиши также действуют так, как если бы раскладка не была изменена. (У меня нет Arch, поэтому я не могу его протестировать.)