1つのパスワードですべてのLUKSボリュームを開く方法は?

1つのパスワードですべてのLUKSボリュームを開く方法は?

私はEndeavourOS(デフォルトではArch)を使用していますが、initrdとしてsystemd-bootとdracutを使用しています。暗号化されていないブートパーティションとLUKS暗号化ルートとスワップパーティションを使用して簡単な設定をしました。特に、設定は以下の出力で説明されています。

$ cat /etc/fstab
# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
UUID=8A2F-4076                            /efi           vfat    defaults,noatime 0 2
/dev/mapper/luks-81733cbe-81f5-4506-8369-1c9b62e7d6be /              ext4    defaults,noatime 0 1
/dev/mapper/luks-9715a3f9-f701-47b8-9b55-5143ca88dcd8 swap           swap    defaults   0 0
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0

$ lsblk -f
NAME                                          FSTYPE      FSVER LABEL       UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1                                                                                                                         
├─nvme0n1p1                                   vfat        FAT32             8A2F-4076                             915.6M     8% /efi
├─nvme0n1p2                                   crypto_LUKS 1                 81733cbe-81f5-4506-8369-1c9b62e7d6be                
│ └─luks-81733cbe-81f5-4506-8369-1c9b62e7d6be ext4        1.0   endeavouros d8d14c59-8704-4fb8-ad02-7d20a26bc1e1  843.6G     2% /
└─nvme0n1p3                                   crypto_LUKS 1                 9715a3f9-f701-47b8-9b55-5143ca88dcd8                
  └─luks-9715a3f9-f701-47b8-9b55-5143ca88dcd8 swap        1     swap        b003ea64-a38d-464c-8609-7278e21f8a0f                [SWAP]

問題は、コンピュータを起動するたびにルートパーティションに1回、スワップパーティションに1回パスワードを2回入力する必要があることです(ヘルプがある場合は、両方のパーティションに同じパスワードを使用することに注意してください)。これは面倒なことになりました。私の質問は:ルートパーティションのパスワードを正常に入力した後にスワップパーティションを自動的に復号化する方法はありますか?

これに非常に似た質問があります賢明な答えしかし、成功しませんでした。答えの最初の部分はDebian中心であり、他のディストリビューションには存在しないスクリプトオプションがあります。 2番目の部分では、crypttabを使用して他のパーティションの復号化に使用されるキーファイルの場所を指定します。

これまで、initrdのcrypttabは次のようになり、/crypto_keyfile.binルートパーティションに存在するすべてのパーティションを開きます。

$ lsinitrd --file /etc/crypttab
luks-81733cbe-81f5-4506-8369-1c9b62e7d6be /dev/disk/by-uuid/81733cbe-81f5-4506-8369-1c9b62e7d6be /crypto_keyfile.bin luks
luks-9715a3f9-f701-47b8-9b55-5143ca88dcd8 /dev/disk/by-uuid/9715a3f9-f701-47b8-9b55-5143ca88dcd8 /crypto_keyfile.bin luks

このアプローチは、次の2つの理由で機能しません。

  1. リンクされた回答で提案されているものとは異なり、(ユーザーがパーティションをcrypttabエントリの順序で照会する)順序は、起動するたびにランダムに割り当てられます。ルートを開いた後に自動的にスワップパーティションを開くことができますが、スワップが最初に来ると、キーファイルがルートにあるため、ルートのパスワードを入力する必要があります。
  2. ルートパスワードを入力した直後にファイルシステムがマウントされないようです。 initrd ファイルシステムが実際に/crypto_keyfile.bin検索されます。これは、ログに 2 回表示される次のエラーを説明します。systemd-cryptsetup[460]: Failed to activate, key file '/crypto_keyfile.bin' missing.

したがって、私が正しい道を進んでいる場合systemd-cryptsetupは、最初にルートパーティションを照会し、スワップパーティションを照会するたびにどのようにチェックし、ルートパーティションを開いた後にファイルシステムがマウントされ、正常に開かれたかを/crypto_keyfile.bin確認するにはどうすればよいですか?スワップパーティション?

そうではなく、ここから完全に外れたら、私が望むことを達成する方法はありますか?

ありがとうございます。

答え1

Archの専門家ではありませんが、Debian中心のスクリプトはDebianでうまく動作しますが、これによるとウィキペディアページ動作しなければならないか、少なくとも動作すると予想されます。

起動中に入力したパスワードはsystemd-cryptsetup(8)によってカーネルキーリングにキャッシュされるため、同じパスワードで複数のデバイスをロック解除できる場合(ここにはcrypttabで起動後にロック解除されたデバイスが含まれます)、各デバイスパスワードのみを入力するできます。一度。

設定に問題があるように見えるのは、ルートパーティションのキーファイルを使用するようにcrypttabを設定し、キーファイルが暗号化されたルートパーティションに保存されることです。パスワードを入力して両方に同じパスワードを使用してもかまいません。crypttabnoneでキーファイルを設定すると問題が解決する可能性があります。

これsystemd-cryptsetup マンページパスワードキャッシュも明示的に言及されているので、オンにする順序は重要ではありません。

場合によっては、休止状態/再開を使用しない場合は、任意のキーを使用してスワップパーティションを暗号化することもできます。

関連情報