加密的主目錄和 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

但現在,X11 透過 ssh 的轉發被破壞了。看起來 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 與未加密家庭的 xauth 合併,其中包含 SSH 新增的授權。當您同時從多個主機連接時,這一點至關重要(覆蓋加密~/.Xauthority將撤銷在安裝加密主目錄時建立的會話的授權)。

它用於base64將二進位資料轉換為可以安全地儲存在變數中的資料。

相關內容