暗号化されたホームディレクトリと SSH (キーのみの認証) により X11 転送が中断される

暗号化されたホームディレクトリと SSH (キーのみの認証) により X11 転送が中断される

Ubuntu 16.04 をインストールする際に、ホーム ディレクトリを暗号化するオプションを選択することにしました。セキュリティ上の理由からパスワード ログインは無効になっているため、SSH キーのみの認証も使用しています。

次のようにして、「.ssh/authorized_keys のためログインできない」問題を解決できました。https://stephen.rees-carter.net/thought/encrypted-home-directories-ssh-key-authentication。 要約すれば:

sudo vim ~/.profile

そして入力する

ecryptfs-mount-private
cd /home/username

しかし、現在、SSH 経由の X11 転送は機能していません。MMC (MIT Magic Cookie) .Xauthority ファイルが暗号化されていないホーム ディレクトリに存在しないようです。

答え1

私の最初の考えは、~/.profile を次のように変更することです。

cp "$HOME/.Xauthority" /temp/$USERNAME/
ecryptfs-mount-private 
mv /temp/$USERNAME/.Xauthority "$HOME"

ここで、/temp/$USERNAME は $USERNAME が所有し、権限が 700 であるディレクトリです。ただし、このオプションがどの程度安全であるかはわかりません。

答え2

私はこれを次のように使用しています/usr/local/bin/ecryptfs-mount-private:

#!/bin/sh
# eCryptfs helper script that transfers X11 Authority properly after mounting
# Copyright 2016+ by Adam Katz <https://github.com/adamhotep>, GPLv2+

# If you're root or lack the expected ecryptfs area, don't do anything extra
if [ "$(id -u)" = 0 ] || ! [ -d "/home/.ecryptfs/$USER" ]; then
  exec /usr/bin/ecryptfs-mount-private "$@"
  exit $?
fi

if grep -qs "$HOME/.Private $HOME ecryptfs" /proc/mounts; then
  exit # already mounted
fi

xauth="$(base64 $HOME/.Xauthority)"

if /usr/bin/ecryptfs-mount-private "$@"; then
  echo "$xauth" |base64 -d |xauth merge
fi

これにより、暗号化されたホームの xauth が、SSH によって追加された認証を含む暗号化されていないホームの xauth と安全にマージされます。これは、複数のホストから同時に接続している場合に不可欠です (暗号化されたものを上書きすると、暗号化された~/.Xauthorityホームがマウントされている間に作成されたセッションの認証が取り消されます)。

base64バイナリ データを変数に安全に格納できるデータに変換するために使用されます。

関連情報