暗号化されたホームディレクトリと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

これは、SSHによって追加された認証を含む暗号化された家のxauthを暗号化されていない家のxauthと安全にマージします。これは、複数のホストで同時に接続する場合に重要です(暗号化をオーバーライドすると、暗号化された~/.Xauthorityホームディレクトリがインストールされたときに作成されたセッションの認証はキャンセルされます)。

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

関連情報