ssh в аккаунт, у которого нет домашнего каталога

Вопрос или проблема

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

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.

  1. Откройте файл конфигурации sshd:

    sudo nano /etc/ssh/sshd_config
  2. Добавьте секцию для группы "homeless":
    Вы можете создать группу для пользователей без домашнего каталога и настроить уникальное местоположение для файлов authorized_keys:

    Match group homeless
       AuthorizedKeysFile /etc/ssh/authorized-keys/%u

    Здесь %u будет заменен на имя пользователя, который подключается.

Создание директории для хранения ключей

  1. Создайте директорию для хранения ключей:
    sudo mkdir /etc/ssh/authorized-keys
    sudo chmod 700 /etc/ssh/authorized-keys

Шаг 3: Генерация и добавление SSH ключей

  1. Генерация SSH ключа для пользователя:
    После создания директории, вам необходимо сгенерировать SSH ключ для нового пользователя:

    sudo -u USERNAME bash -c "ssh-keygen -t ecdsa -b 256 -f /etc/ssh/authorized-keys/USERNAME -q -N ''"

    Это создаст файл ключа без пароля и сохранит его по указанному пути.

  2. Добавьте публичный ключ в файл 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 сервера

  1. Перезапустите службу SSH:
    После изменения конфигурации необходимо перезапустить SSH для применения новых настроек:

    sudo systemctl restart sshd

Шаг 5: Подключение к удаленному серверу

Теперь вы готовы подключиться к вашему серверу. Из машины alpha выполните команду SSH:

ssh USERNAME@beta

Заключение

Подключение через SSH к учётной записи пользователя без домашнего каталога возможно и безопасно, если правильно настроить сервер SSH. Надеюсь, данный процесс окажется для вас полезным и позволит успешно организовать удаленный доступ для пользователей без домашних каталогов. У обеспечивает гибкость и безопасность, позволяя администраторам настроить доступ, соответствующий требованиям.

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

Оцените материал
Добавить комментарий

Капча загружается...