- Вопрос или проблема
- Ответ или решение
- Шаг 1: Создание пользователя без домашнего каталога
- Шаг 2: Конфигурация SSH для пользователей без домашнего каталога
- Изменение конфигурации sshd_config
- Создание директории для хранения ключей
- Шаг 3: Генерация и добавление SSH ключей
- Шаг 4: Перезапуск SSH сервера
- Шаг 5: Подключение к удаленному серверу
- Заключение
Вопрос или проблема
В продолжение моего предыдущего вопроса, я решил создать локальные учетные записи пользователей, как указано ниже.
adduser --system --no-create-home USERNAME
Теперь я хотел бы, чтобы локальные пользователи могли получать доступ к машинам с помощью ssh
. Насколько я понимаю, ssh
работает следующим образом.
Предположим, у меня есть 2 машины (скажем, alpha и beta).
- С машины alpha:
ssh user@beta
- Публичный ключ alpha будет находиться в
~/.ssh/authorized_keys
на машине beta. - Приватный ключ alpha будет находиться в
/~/.ssh
на машине alpha.
Теперь я планирую реализовать без домашней директории для пользователей. Таким образом, предположим, что я adduser
в машину beta без домашней директории для любого пользователя, смогу ли я по-прежнему подключиться к beta с alpha?
~/.ssh/
это просто место по умолчанию, которое использует sshd
для поиска публичных ключей входящих пользователей. Вы можете настроить местоположение и файл, который ищет sshd
, изменив директиву AuthorizedKeysFile
в /etc/ssh/sshd_config
. В данный момент у меня это выглядит так:
AuthorizedKeysFile %h/.ssh/authorized_keys
Страница sshd_config(5)
мануала предоставляет немного больше деталей:
AuthorizedKeysFile
Указывает файл, который содержит публичные ключи, которые можно использовать для
аутентификации пользователей.
Формат описан в
разделе ФОРМАТ АВТОРИЗОВАННЫХ_КЛЮЧЕЙ документа sshd(8).
AuthorizedKeysFile может содержать токены формата%T
, которые
заменяются во время установления соединения.
Следующие токены определены:%%
заменяется на литерал ‘%
‘,
%h
заменяется на домашнюю директорию аутентифицируемого пользователя, а%u
заменяется на имя пользователя этого пользователя.
После расширения,
AuthorizedKeysFile считается абсолютным путем
или путем, относительно домашней директории пользователя.
Может быть указано несколько файлов, разделенных пробелами.
По умолчанию это “.ssh/authorized_keys .ssh authorized_keys2”.
Просто будьте внимательны, что sshd
очень требовательна к разрешениям файла authorized_key
пользователя. Вы хотите внимательно следить за своими журналами, если настроите это и столкнетесь с проблемами при входе.
Вместо изменения глобального назначения AuthorizedKeysFile
, вы можете создать группу бездомных пользователей и установить для нее конкретное местоположение.
Вам нужно будет добавить только пару строк в /etc/ssh/sshd_config/
:
Match group homeless
AuthorizedKeysFile /etc/ssh/authorized-keys/%u
(%u
– это токен конфигурации ssh, который расширяется в локальное имя пользователя во время выполнения)
Затем создайте ключ пользователя:
sudo -u <username> bash -c "ssh-keygen -t ecdsa -b 256 -f /etc/ssh/authorized-keys/<username> -q -N ''"
Ответ или решение
Для подключения через SSH к учетной записи пользователя без домашнего каталога, необходимо учесть несколько важных моментов и шагов, которые позволят вам организовать безопасный доступ к вашему серверу. Рассмотрим процесс детально.
Шаг 1: Создание пользователя без домашнего каталога
Когда вы создаете нового пользователя с помощью команды adduser --system --no-create-home USERNAME
, этот пользователь не будет иметь стандартного домашнего каталога. Это может вызвать проблемы с SSH, так как сервер SSH (sshd) по умолчанию ищет файлы ключей авторизации (authorized_keys
) в каталоге .ssh
, который расположен внутри домашнего каталога пользователя.
Шаг 2: Конфигурация SSH для пользователей без домашнего каталога
Изменение конфигурации sshd_config
Чтобы обойти проблему отсутствия домашнего каталога, вы можете изменить настройку сервера SSH.
-
Откройте файл конфигурации sshd:
sudo nano /etc/ssh/sshd_config
-
Добавьте секцию для группы "homeless":
Вы можете создать группу для пользователей без домашнего каталога и настроить уникальное местоположение для файловauthorized_keys
:Match group homeless AuthorizedKeysFile /etc/ssh/authorized-keys/%u
Здесь
%u
будет заменен на имя пользователя, который подключается.
Создание директории для хранения ключей
- Создайте директорию для хранения ключей:
sudo mkdir /etc/ssh/authorized-keys sudo chmod 700 /etc/ssh/authorized-keys
Шаг 3: Генерация и добавление SSH ключей
-
Генерация SSH ключа для пользователя:
После создания директории, вам необходимо сгенерировать SSH ключ для нового пользователя:sudo -u USERNAME bash -c "ssh-keygen -t ecdsa -b 256 -f /etc/ssh/authorized-keys/USERNAME -q -N ''"
Это создаст файл ключа без пароля и сохранит его по указанному пути.
-
Добавьте публичный ключ в файл authorized_keys:
Убедитесь, что публичный ключ, созданный на предыдущем шаге, правильно перенесен в файл:cat /etc/ssh/authorized-keys/USERNAME.pub | sudo tee /etc/ssh/authorized-keys/USERNAME
Убедитесь в том, что файл имеет правильные права доступа:
sudo chmod 600 /etc/ssh/authorized-keys/USERNAME
Шаг 4: Перезапуск SSH сервера
-
Перезапустите службу SSH:
После изменения конфигурации необходимо перезапустить SSH для применения новых настроек:sudo systemctl restart sshd
Шаг 5: Подключение к удаленному серверу
Теперь вы готовы подключиться к вашему серверу. Из машины alpha
выполните команду SSH:
ssh USERNAME@beta
Заключение
Подключение через SSH к учётной записи пользователя без домашнего каталога возможно и безопасно, если правильно настроить сервер SSH. Надеюсь, данный процесс окажется для вас полезным и позволит успешно организовать удаленный доступ для пользователей без домашних каталогов. У обеспечивает гибкость и безопасность, позволяя администраторам настроить доступ, соответствующий требованиям.
Информация, представленная выше, поможет вам организовать доступ через SSH к пользователям, которые не имеют стандартного домашнего каталога, тем самым обеспечивая удовлетворение требований безопасности и соответствия.