SSH з дозволеними ключами до системи Ubuntu із зашифрованим homedir?


38

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


Кращі пропозиції тегів вітаються, не вдалося знайти дійсно хороших збігів у запропонованих тегах.
Джош

1
Я думаю, що вони є на місці, насправді. є ubuntuтег, але я не думаю, що ця проблема є специфічною для будь-якої конкретної ОС.
шарлатанний кіхот

Симптомом цієї проблеми для мене в Ubuntu 11.10 є те, що перша спроба запустити ssh в машину полягає в тому, що потрібна автентифікація пароля (оскільки authorized_keysвона ще не доступна). Якщо я запускаю інше ssh-з'єднання, тоді автентифікація ключа працює.
mindless.panda

Відповіді:


39

Змініть цей рядок у файлі sshd_config:

AuthorizedKeysFile /etc/ssh/%u/authorized_keys

А потім перемістіть файл дозволеного_кейса до / etc / ssh / ваше-ім’я користувача / санкціонований_keys

Ця публікація документує ще один спосіб вирішення цього питання.


1
Я думав, що перше рішення звучало ідеально, але це не спрацювало для мене. Не знаю чому. Але посада, яку ви пов’язали, працювала чудово. Спасибі!
Джош

3
Джош - це цільовий користувач, який є власником цих файлів, і дозволи 600 (700 за dir)?
NVRAM

1
Перейдіть за цим посиланням для отримання повних інструкцій: SSH Ключі на Ubuntu . Прокрутіть униз до розділу усунення несправностей.
jjeaton

8

Це рішення надихнуло цю посаду . IMHO це набагато краще, ніж змінювати / etc / ssh / sshd_config, оскільки він взагалі не потребує кореневого доступу.

# 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

3
Чи можете ви надати короткий виклад того, що це насправді робить?
mindless.panda

Я зробив правку , щоб пояснити , що відбувається: ви збережете відкритого ключа (ами) , з яким ви хочете отримати доступ до машини , щоб authorized_keysв /home/**.ecryptfs**/$USERбез шифрування і посилання на нього від вас шифруються будинку, а також ваш незашифрованому будинку. Нове .profileу вашому незашифрованому будинку має змонтувати ваш зашифрований домашній каталог, "CD" у ньому та вивести його справжнє .profile.
LiveWireBT

Працює за призначенням на новій установці 16.04. Кілька зауважень: незашифрований дім не був доступний для запису (що має сенс, ви не хочете, щоб користувачі все підривали, випадково зберігаючи там дані), тому тимчасово змінюйте дозволи. Також потрібно зробити все це з терміналу, виходу з графічного інтерфейсу та lightdm або будь-якого DM, який ви використовуєте, зупинено. ecryptfs-mount-privateзапитує пароль користувача щоразу після успішного входу через відкриті ключі, якщо ви не увійшли в GUI. Моя редакція замінює декілька відгомонів з документом тут, він менш повторюваний на введенні, не плутайте це.
LiveWireBT

2

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

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

Якщо ви думаєте, що теоретично слід використовувати ключ ssh для розшифрування парольної фрази для монтування під час входу, це не буде працювати, оскільки ваш приватний ключ взагалі ніколи не надсилається на сервер.

Отже, якщо ви хочете шифрувати, вам доведеться використовувати паролі. Зашифровані домашні каталоги несумісні з даними відбитків пальців з тієї ж причини.


* Я знаю, що це складніше, ніж один пароль, але давайте продовжимо його простотою.


Ну, відповідь djhowell спрацювала чудово, тому, імовірно, мій домашній каталог зашифрований ключем, який має ОС, і може використовувати його для розшифрування. Крім того, коли SSHing входить, sshd не знає, як розшифрувати домашню директорію, так що це не пояснює, чому вона працює з автентифікацією пароля.
Джош

Зачекайте, тож коли ви входите через ssh без введення паролів, ваш зашифрований домашній каталог насправді встановлюється?
Райан Ч. Томпсон,

Так. І подумав, коли я виходжу.
Джош

Ну, це дивно. Я отримую поведінку, яку я описую у своїй відповіді. Мій приватний редактор встановлюється лише в тому випадку, якщо в моєму вході був пароль (зокрема, мій пароль для входу). Цікаво, що ти зробив інакше, щоб змусити його працювати з відкритими ключами.
Райан К. Томпсон,

@Ryan Thompson Ви використовуєте Ubuntu 9.10?
Джош

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-агент для кращого способу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.