加密的主目录和 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将二进制数据转换为可以安全存储在变量中的数据。

相关内容