Измените эту строку в вашем файле sshd_config:
AuthorizedKeysFile /etc/ssh/%u/authorized_keys
А затем переместите ваш файл author_keys в / etc / ssh / your-username / authorized_keys
Этот пост документирует другой способ решить эту проблему.
Недавно я установил новый сервер с Ubuntu karmic 9.10, и когда я создал свой домашний каталог, я решил сделать его зашифрованным. Теперь, после загрузки моего файла author_keys в ~ / .ssh, он не распознается, потому что мой домашний каталог не расшифровывается до тех пор, пока я не войду в систему. Есть ли способ заставить работать ключи SSH с зашифрованными домашними каталогами в Ubuntu?
Измените эту строку в вашем файле 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 для лучшего способа.