Недавно я установил новый сервер с Ubuntu karmic 9.10, и когда я создал свой домашний каталог, я решил сделать его зашифрованным. Теперь, после загрузки моего файла author_keys в ~/.ssh, он не распознается, потому что мой домашний каталог не расшифровывается до тех пор, пока я не войду в систему. Есть ли способ заставить ключи SSH работать с зашифрованными домашними каталогами под Ubuntu?
5 ответов
Измените эту строку в вашем файле sshd_config:
AuthorizedKeysFile /etc/ssh/%u/authorized_keys
А затем переместите ваш файл author_keys в /etc /ssh /your-username /authorized_keys
Этот пост документирует другой способ решить эту проблему.
Это решение было вдохновлено этим постом. ИМХО, это намного лучше, чем модифицировать ваш /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
Я просто потратил некоторое время, возиться с этим, и ответ в том, что это в значительной степени невозможно. Можно настроить беспарольные открытые ключи проверки подлинности учетных записи с помощью SSH, так что вам не придется вводить пароль , чтобы войти, но это не уедет, потому что ваш домашний каталог еще зашифрован.
Простой факт заключается в том, что ваш зашифрованный домашний каталог зашифрован паролем *, поэтому единственный способ расшифровать его - использовать этот пароль.
И если вы думаете, что теоретически должна быть возможность использовать ваш ключ ssh для расшифровки парольной фразы монтирования при входе в систему, это не сработает, потому что ваш закрытый ключ вообще никогда не отправляется на сервер.
В общем, если вы хотите шифрование, вы должны использовать пароли. Зашифрованные домашние каталоги несовместимы с логинами отпечатков пальцев по той же причине.
* Я знаю, что это сложнее, чем один пароль, но давайте пока будем проще.
Если вам не нравится изменять настройки по умолчанию (мне не нравятся мои файлы там, где я их ожидаю), то вы можете посмотреть на мой пост о том, как это сделать:
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
Вы можете использовать более безопасный открытый ключ для входа в систему, а затем выполнить следующее, чтобы смонтировать каталог после ввода пароля:
ecryptfs-mount-private
Прочитав файл ~/README.txt
после входа в систему через SSH, вы обнаружите, что у вас нет ваших файлов, потому что зашифрованный каталог не смонтирован.
Вы не должны использовать открытые ключи без пароля для входа в любом случае. Посмотрите на ssh-agent для лучшего способа.