Зашифрованный домашний каталог и 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для преобразования двоичных данных в нечто безопасное для хранения в переменной.

Связанный контент