ecryptfs-mount-privateで若干嵌った話

とあるVPSを借りてUbuntuを入れて作業マシンを作っていたのだけど、インストール時にホームを暗号化するかという項目を何気なしに有効にした状態でインストールしたら若干はまってしまった。 この機能はホームディレクトリ以下をeCryptfsで暗号化する機能だったのだけど、これを有効にしているとsshの公開鍵認証が通らなくなった。公開鍵認証が通らないというのはよくある話なので、authorized_keysのフォーマットが壊れているとかパーミッションに問題があるとか、クライアント側での鍵のフォワーディングに失敗しているとか、そういう問題かと思ったが違った。sshdのログレベルを上げて何に失敗しているか見たところauthorized_keys自体のstatに失敗している旨の表示が出ていた。しかし、ログインして見ると確かにファイルはあるししばらく何が起こっているか理解できなかった。 原因はecryptfs-mount-privateという暗号化されたファイルシステムをログイン時にmountする仕組みと認証の食い合わせの問題だった。ログインして見るとauthorized_keysが存在するように見えるのはその通りで、ログインする瞬間にホームをmountするのでログイン後に見えるのは正しい。しかしログイン前にはホームはほぼ空なのだ。 ecyrptfsでのホームの暗号化は /home/.ecryptfs 以下に暗号化されたファイルが存在して、それをログイン時のUNIXパスワードをPAM経由で取得しパスフレーズとして/home/以下に動的にmountする仕組みなのだ。そりゃUNIXパスワードが必要なわけだ。 ホーム外にsshの鍵を置く方法など幾つか回避策はあるのだけど、ログインされていない状態ではそもそもホームディレクトリ以下が触れないというのは色々と不便そうだったので、結局暗号化自体を止めた。