38

Недавно я установил новый сервер с Ubuntu karmic 9.10, и когда я создал свой домашний каталог, я решил сделать его зашифрованным. Теперь, после загрузки моего файла author_keys в ~/.ssh, он не распознается, потому что мой домашний каталог не расшифровывается до тех пор, пока я не войду в систему. Есть ли способ заставить ключи SSH работать с зашифрованными домашними каталогами под Ubuntu?

5 ответов5

39

Измените эту строку в вашем файле sshd_config:

AuthorizedKeysFile /etc/ssh/%u/authorized_keys

А затем переместите ваш файл author_keys в /etc /ssh /your-username /authorized_keys

Этот пост документирует другой способ решить эту проблему.

8

Это решение было вдохновлено этим постом. ИМХО, это намного лучше, чем модифицировать ваш /etc /ssh /sshd_config, так как он вообще не требует root-доступа.

# Make your public key accessible
mkdir -m 700 /home/.ecryptfs/$USER/.ssh
echo $YOUR_PUBLIC_KEY > /home/.ecryptfs/$USER/.ssh/authorized_keys
ln -s /home/.ecryptfs/$USER/.ssh/authorized_keys ~/.ssh/authorized_keys
ecryptfs-umount-private
chmod 700 $HOME
mkdir -m 700 ~/.ssh
ln -s /home/.ecryptfs/$USER/.ssh/authorized_keys ~/.ssh/authorized_keys

# Make it auto-mount with first login.
# Note: it can cause problems with automated login.
echo /usr/bin/ecryptfs-mount-private > ~/.profile
echo cd >> ~/.profile
echo source .profile >> ~/.profile
ecryptfs-mount-private
2

Я просто потратил некоторое время, возиться с этим, и ответ в том, что это в значительной степени невозможно. Можно настроить беспарольные открытые ключи проверки подлинности учетных записи с помощью SSH, так что вам не придется вводить пароль , чтобы войти, но это не уедет, потому что ваш домашний каталог еще зашифрован.

Простой факт заключается в том, что ваш зашифрованный домашний каталог зашифрован паролем *, поэтому единственный способ расшифровать его - использовать этот пароль.

И если вы думаете, что теоретически должна быть возможность использовать ваш ключ ssh для расшифровки парольной фразы монтирования при входе в систему, это не сработает, потому что ваш закрытый ключ вообще никогда не отправляется на сервер.

В общем, если вы хотите шифрование, вы должны использовать пароли. Зашифрованные домашние каталоги несовместимы с логинами отпечатков пальцев по той же причине.


* Я знаю, что это сложнее, чем один пароль, но давайте пока будем проще.

1

Если вам не нравится изменять настройки по умолчанию (мне не нравятся мои файлы там, где я их ожидаю), то вы можете посмотреть на мой пост о том, как это сделать:

http://www.enetworkservices.net/wordpress/ssh-public-keys-with-encrypted-home-directory.html

Короче. Вы помещаете свои ключи в зашифрованную версию вашего пользователя ~/.ssh и символическую ссылку зашифрованной версии ~/.ssh на другую. Так всегда есть.

Для таких ленивых, как я, вот сценарий, который сделает это за вас. Просто запустите его как обычный пользователь. Нет корневого доступа или разрешений, необходимых и никаких изменений конфигурации сервера не требуется. Чисто нормальные пользовательские настройки.

#!/bin/bash
#
# Encrypted Home DIR SSH Key fix.
# Requires modification to sshd_config
#  AuthorizedKeys /etc/ssh/authorized_keys/%u/authorized_keys
# sudo mkdir /etc/ssh/authorized_keys -m 777
# for existing users run from home directory when login.
# for new users modify /etc/skel to include .bashrc to call script.
#
# Author: Benjamin Davis <bdavis@enetworkservices.net>

# Check if directory exists.
if [ ! -d "/etc/ssh/authorized_keys/$LOGNAME" ]
then
    # Make directory with restricted permissions.
    echo "Creating user ssh directory."
    mkdir /etc/ssh/authorized_keys/$LOGNAME -m 700
fi

# Check real users home .ssh folder
if [ -d "/home/$LOGNAME/.ssh" ]
then
    # Check if dir is symlink
    if [ ! -h /home/$LOGNAME/.ssh ]
    then
        echo "Moving configs."
        mv /home/$LOGNAME/.ssh/. /etc/ssh/authorized_keys/$LOGNAME/.
        rm -rf /home/$LOGNAME/.ssh/
        ln -s -T /etc/ssh/authorized_keys/$LOGNAME /home/$LOGNAME/.ssh
        clear
    fi
else
    # Does not exist so link it.
    if [[ $EUID -ne 0 ]]
    then
        echo "User ssh config folder does not exist. Creating."
        mkdir /home/$LOGNAME/.ssh -m 700
        ln -s -T /etc/ssh/authorized_keys/$LOGNAME /home/$LOGNAME/.ssh
    fi
fi
0

Вы можете использовать более безопасный открытый ключ для входа в систему, а затем выполнить следующее, чтобы смонтировать каталог после ввода пароля:

ecryptfs-mount-private

Прочитав файл ~/README.txt после входа в систему через SSH, вы обнаружите, что у вас нет ваших файлов, потому что зашифрованный каталог не смонтирован.

Вы не должны использовать открытые ключи без пароля для входа в любом случае. Посмотрите на ssh-agent для лучшего способа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .