Настройка сервера OpenSSH

Настройка сервера OpenSSH #

Васильев Андрей Михайлович, 2025

Версии презентации


Аутентификация пользователей #

OpenSSH-сервер поддерживает множество вариантов по выполнению аутентификации:

  • Аутентификация с помощью Kerberos
  • Аутентификация по ключу хоста, расположенном на клиенте
  • Аутентификация по нескольким текстовым факторам
  • Аутентификация по паролю
  • Аутентификация по ключу пользователя

Рассмотрим наиболее часто применяемые: по паролю и по ключу пользователя


Аутентификация по паролю #

diagram


  • Пароль надо вводить при каждом подключении
  • Проверка пароля делегирована стандартной подсистеме аутентификации, PAM, Pluggable Authentication Modules
  • Возможности пользователя могут отличаться от тех, что доступны при локальном входе

Аутентификация по ключу #

diagram


  • Обычно используются ключи по умолчанию, расположенные в каталоге ~/.ssh
  • Пользователь при подключении может указать путь к любому ключу
  • Ключ может быть защищён паролём, при его считывании будет запрошен пароль у пользователя

Создание ssh-ключей #

В протоколе SSH используется асимметричное шифрование, для которого применяется пара из:

  • Публичного ключа, с помощью которого можно расшифровать данные
  • Приватного ключа, с помощью которого можно зашифровать данные (или наоборот)

Для создания ключей используется приложение ssh-keygen:

ssh-keygen -t ed25519

Далее будут заданы вопросы о местоположении и пароля

  • По умолчанию пара ключей создаются в каталоге ~/.ssh
  • Пароль не является необходимостью, но его использование повышает безопасность

В результате работы команды будут созданы файлы:

  • ~/.ssh/id_ed25519 — секретный ключ, который нельзя никому передавать
  • ~/.ssh/id_ed25519.pub — публичный ключ, который передаётся на сервер

Передача ключа на сервер #

На сервере необходимо установить публичную часть ключа, чтобы выполнить аутентификацию пользователя

Это делается путём копирования содержимого публичного ключа в список авторизованных ключей. Обычно этот файл находится по пути ~/.ssh/authorized_keys

Файл можно передать путём копирования файла, использования текстового редактора и буфера обмена или с помощю приложения ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_ed25519 user@192.168.122.9

Необходимо будет пройти настроенную аутентификацию (по паролю или другому ключу)


SSH-Агент #

Ключи, защищённые паролём, безопаснее, но требуют постоянного ввода пароля

Ключи можно загрузить в специальную службу ssh-agent, введя пароль от ключа, чтобы затем ssh-клиент считывал их из службы, а не с файловой системы

Для загрузки ключа в агент используется приложение ssh-add:

ssh-add [file ...]
  • Можно передать список приватных файлов, которые необходимо открыть
  • Если не передать список, то в агент будут добавлены все ключи из ~/.ssh

Для очистки списка открытых SSH-ключей необходимо запустить приложение с аргументом -D: ssh-add -D


Конфигурационный файл пользователя #

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

Рассмотрим пример файла ~/.ssh/config:

Host playground
     HostName 127.0.0.1
     Port 2022
     User user
     IdentityFile ~/.ssh/playground-key

Тогда для подключения к данному серверу достаточно будет выполнить:

ssh playground

Вместо:

ssh -i ~/.ssh/playground-key -p 2022 user@127.0.0.1


Настройка сервера OpenSSH #

Конфигурация сервера OpenSSH в ОС семейства Альт находится по пути /etc/openssh/sshd_config, а его описание находится в 5-м разделе руководства

Процесс редактирования сервера sshd надо выполнять аккуратно, т.к. некорректная конфигурация потребует наличия альтернативного способа подключения к серверу, что зачастую затруднено или дорого

Процесс редактирования:

  1. Сделайте резервную копию файла конфигурации
  2. Отредактируйте текущий файл конфигурации
  3. Проверьте техническую корректность файла sshd -t
  4. Проверьте логическую корректность файла
  5. С помощью systemctl reload sshd перезагрузите конфигурационный файл

Ряд параметров сервера #

PermitRootLogin no

Запрещает аутентификацию пользователя root, рекомендуемая настройка

AllowUsers student

Разрешает доступ только пользователю student, все другие пользователи не смогут подключиться.

AllowGroups wheel ssh

Разрешает доступ только пользователей, входящих в одну из групп wheel или ssh


Использование инструмента control #

Альт предоставляет инструмент control с помощью которого можно выполнять настройку политик безопасности: разрешать или запрещать выполнять различные операции

Данный инструмент позволяет настраивать следующие политики:

  • sshd-password-auth — разрешить или запретить аутентификацию по паролю
  • sshd-allow-groups — включить список групп, которым разрешён доступ

Например для отключения аутентификации по паролю:

  1. Нужно настроить политику: control sshd-password-auth disabled
  2. Перезагрузить службу: systemctl restart sshd

© A. M. Васильев, 2025, CC BY-SA 4.0, andrey@crafted.su