page counter next up previous contents
Next: 不使用 /etc/crypttab Up: LUKS 檔案系統加解密 Previous: 使用 /etc/crypttab   Contents   DYWANG_HOME

KeyFile 解密

  1. 產生一個隨機金鑰 keyfile。
    [root@kvm7 ~]# dd if=/dev/urandom of=/boot/keyfile bs=1024 count=4
    4+0 records in
    4+0 records out
    4096 bytes (4.1 kB) copied, 0.00599741 s, 683 kB/s
    
  2. 將 keyfile 設定成只有 root 可讀取。
    [root@kvm7 ~]# chmod 0400 /boot/keyfile
    
  3. 輸入先前 luks 格式化設定的密碼將 keyfile 加到 luks 分割區 /dev/vdb1。
    [root@kvm7 ~]# cryptsetup luksAddKey /dev/vdb1 /boot/keyfile 
    Enter any existing passphrase:
    
  4. 如果之前已開啟 luks 的 mapping,則先卸載 /sysroot,並移除 mapping /dev/mapper/luks-root。
    [root@kvm7 ~]# umount /sysroot/
    [root@kvm7 ~]# dmsetup remove /dev/mapper/luks-root 
    [root@kvm7 ~]# ll /dev/mapper/luks-root
    ls: cannot access /dev/mapper/luks-root: No such file or directory
    
  5. 以 /boot/keyfile 開啟 /dev/vdb1 mapping。
    [root@kvm7 ~]# cryptsetup --key-file /boot/keyfile luksOpen /dev/vdb1 luks-root
    [root@kvm7 ~]# ll /dev/mapper/luks-root 
    lrwxrwxrwx. 1 root root 7 Dec  5 14:14 /dev/mapper/luks-root -> ../dm-4
    
  6. 修改 luks mapping 檔 /etc/crypttab 分割區自動解密對應檔,此檔有四個欄位,依序為 mapping 名、裝置、金鑰、格式。
    [root@kvm7 ~]# vim /etc/crypttab 
    [root@kvm7 ~]# cat /etc/crypttab
    luks-root UUID=77472cc9-0dd3-4c4c-81ad-e0ecae7570b2 /boot/keyfile luks
    
  7. 重新開機
    [root@kvm7 ~]# reboot
    
  8. 重開機不用輸入密碼,加密分割區 /dev/vdb1 的 mapping luks-root,成功掛載在 /sysroot 目錄。
    [root@kvm7 ~]# lsblk /dev/vdb
    NAME          MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
    vdb           252:16   0   4G  0 disk  
    └─vdb1        252:17   0   2G  0 part  
      └─luks-root 253:4    0   2G  0 crypt /sysroot
    [root@kvm7 ~]# df -h /sysroot
    Filesystem             Size  Used Avail Use% Mounted on
    /dev/mapper/luks-root  2.0G  1.7G  318M  85% /sysroot
    



De-Yu Wang 2020-05-14