UbuntuのeCryptfsで暗号化したホームディレクトリを読み込む方法
VirtualBoxのVM(Debian sid)上でビルドしていたら、突然PCがホストごとフリーズしてうんともすんとも
言わなくなったので電源を切って入れなおしたのだが、
(initramfs)とかBusybox などが表示されている黒画面しかでなくなったので、そのときの復旧メモ。
とりあえず喪失すると後で手に入らなくなる可能性のあるデータだけ救出しようとして、
今使っているXubuntu(Ubuntuのフレーバーディストリ、Xfceがデフォルト)のisoをUSBメモリに焼いてブートしたのだが。ホームディレクトリが読み込めない、そういえばインストール時に暗号化したのだった……、復号キーはあるけど読み込み方がわからん…となった。
そのものズバリの情報があまり見つからなかったので書いておく。
簡単に言うと、eCryptfsでマウントすれば読み込める。
xubuntu@xubuntu:~$ sudo mount -t ecryptfs /media/xubuntu/AAAAaaaa-AAAA-aaaa-AAAA-aaaaAAAAaaaa/home/.ecryptfs/tsr/.Private /mnt/mda1 Passphrase: Select cipher: 1) aes: blocksize = 16; min keysize = 16; max keysize = 32 2) blowfish: blocksize = 8; min keysize = 16; max keysize = 56 3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 4) twofish: blocksize = 16; min keysize = 16; max keysize = 32 5) cast6: blocksize = 16; min keysize = 16; max keysize = 32 6) cast5: blocksize = 8; min keysize = 5; max keysize = 16 Selection [aes]: Select key bytes: 1) 16 2) 32 3) 24 Selection [16]: Enable plaintext passthrough (y/n) [n]: Enable filename encryption (y/n) [n]: y Filename Encryption Key (FNEK) Signature [xxxxxxxxXXXXXXXX]: XXXXXXXXxxxxxxxx Attempting to mount with the following options: ecryptfs_unlink_sigs ecryptfs_fnek_sig=XXXXXXXXxxxxxxxx ecryptfs_key_bytes=16 ecryptfs_cipher=aes ecryptfs_sig=1356f7a19d526101 WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt], it looks like you have never mounted with this key before. This could mean that you have typed your passphrase wrong. Would you like to proceed with the mount (yes/no)? : yes Would you like to append sig [XXXXXXXXxxxxxxxx] to [/root/.ecryptfs/sig-cache.txt] in order to avoid this warning in the future (yes/no)? : yes Successfully appended new sig to user sig cache file Mounted eCryptfs
とやると、/mnt/mda1 からホームフォルダが読み込めた。
AとかXで続いている部分は環境依存とか復号関連のキーとかなので読み変えてください。
一番最初に入れるpassphraseはインストール時にメモっておくように表示される32桁ぐらいの16進数のパスフレーズである。
これだけではダメでfilename encryptionの解除に
/home/.ecryptfs/username/.ecryptfs/Private.sigの下の行に書いてあるフレーズを
Filename Encryption Key (FNEK) Signatureを聞かれた時に入力すれば良い。(上の手順の18行目)
Private.sigの上の行はpasspharseと対応しているようなので、自分の入力が間違っていないかの確認をするのに使える。
$ sudo ecryptfs-add-passphrase --fnek
で、passphraseを入れても確認できる。情報元
最後のin order to avoid this warning in the future? に yesと答えないと何故かうまくいかないので注意。
PCの障害そのものはやはりファイルシステム不整合だったようで、
# 使ってるシステムのルートのパスをmount(8)で調べて/dev/XXXX/YYYYを置き換える。 $ sudo fsck -y /dev/XXXX/YYYY
をUSBブートしたXubuntuのコンソールから実行して、再起動したら治った(はず)
たぶんinitramfsからfsck(8)しても治るはず。
Written by tSU-RooT. Unless otherwise noted, the text of this page is released under a "CC0 1.0 Universal Public Domain Dedication"