Настройка сервера OpenSSH #
Васильев Андрей Михайлович, 2024
Версии презентации
Технология SSH #
SSH (Secure Shell, «безопасная оболочка») — это протокол удалённого управления компьютера с ОС семейства Linux
- SSH поддерживает множество актуальных алгоритмов шифрования
- SSH-клиенты и SSH-серверы доступны для большинства сетевых ОС
- SSH позволяет безопасно передавать в незащищённой среде практически любой другой сетевой протокол
- SSH может использовать сжатие передаваемых данных перед отправкой
Установка SSH-сервера #
Существует несколько реализаций SSH-сервера, рассмотрим наиболее популярное и проверенное решение — сервер OpenSSH
В операционных системах Альт данный сервер поставляется в пакете
openssh-server
После установки данного пакета службу сервера неолбходимо запустить:
systemctl enable --now sshd
Обратите внимание, что служба называется не также как и пакет
Подключение к SSH-серверу #
Клиентские приложения поставляются в пакете openssh-clients
Для выполнения подключения к удалённому серверу с целью получения интерактивного
доступа следует воспользоваться приложением ssh
В самой простейшей форме подключение будет выглядеть следующим образом:
ssh host
где host
— это IP-адрес или доменное имя сервера, к которому выполняется
подключение
По умолчанию предполагается, что имя пользователя на удалённом сервере совпадает с именем текущего пользователя
Для явного указания удалённого имени используйте форму
ssh user@host
Возможности клиента #
Приложение ssh поддерживает множество разных функций, которые доступны через множество аргументов, рассмотрим некоторые из них
ssh [-p port] destination [command [argument ...]]
Указание порта сервера #
По умолчанию сервер ожидает подключения по порту 22, но в некоторых ситуациях он может быть запущен (или доступен) по другому порту
ssh -p 2022 user@localhost
Интерактивный запуск команд #
Если не указать команду для запуска на удалённом сервере, то на сервере будет запущен, если доступен, интерактивный интерпретатор команд
Когда он завершит свою работу (по вводу команды exit
, например), будет
завершено и ssh-соединение
Аутентификация пользователей #
OpenSSH-сервер поддерживает множество вариантов по выполнению аутентификации:
- Аутентификация с помощью Kerberos
- Аутентификация по ключу хоста, расположенном на клиенте
- Аутентификация по нескольким текстовым факторам
- Аутентификация по паролю
- Аутентификация по ключу пользователя
Рассмотрим наиболее часто применяемые: по паролю и по ключу пользователя
Аутентификация по паролю #
- Пароль надо вводить при каждом подключении
- Проверка пароля делигирована стандартной подсистеме аутентификации, Pluggable Authentication Modules
- Возможности пользователя могут отличаться от тех, что доступны при локальном входе
Аутентификация по ключу #
- Обычно используются ключи по умолчанию, расположенные в каталоге
~/.ssh
- Пользователь при подключении может указать путь к любому ключу
- Ключ может быть защищён паролём, при его считывании будет запрошен пароль у пользователя
Создание ssh-ключей #
В протоколе SSH используется ассиметричное шифрование, для которого применяется пара из:
- Публичного ключа, с помощью которого можно расшифровать данные
- Приватного ключа, с помощью которого можно зашифровать данные (или наоборот)
Для создания ключей использутеся приложение ssh-keygen
:
ssh-keygen -t ed25519
Далее будут заданы вопросы о местоположении и пароля
- По умолчанию пара ключей создаются в каталоге
~/.ssh
- Пароль не является необходимостью, но его использование повышает безопасность
В результате работы команды будут созданы файлы:
id_ed25519
— секретный ключ, который нельзя никому передаватьid_ed25519.pub
— публичный ключ, который передаётся на сервер
Передача ключа на сервер #
На сервере необходимо установить публичную часть ключа, чтобы выполнить аутентификацию пользователя
Это делается путём копирования содержимого публичного ключа в список
авторизованных ключей. Обычно этот файл находится по пути
~/.ssh/authorized_keys
Файл можно передать путём копирования файла, использования текстового редактора
и буфера обмена или с помощю приложения ssh-copy-id
:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.168.122.9
Необходимо будет пройти настроенную аутентификацию (по паролю или другому ключу)
SSH-Агент #
Ключи, защищённые паролём, безопаснее беспарольных альтернатив, но требуют постоянного ввода пароля
Ключи можно загрузить в специальную службу ssh-agent, введя пароль от ключа, чтобы затем ssh-клиент считывал их из службы, а не с файловой системы
Для загрузки ключа в агент используется приложение ssh-add
:
ssh-add [file ...]
- Можно передать список приватных файлов, которые необходимо открыть
- Если не передать список, то в агент будут добавлены все ключи из
~/.ssh
Конфигурационный файл пользователя #
Если необходимо выполнять подключения к разным системам с разнородными параметрами, то их удобно единожды зафиксировать в конфигурационном файле
Рассмотрим пример файла ~/.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 надо выполнять аккуратно, т.к. некорректная конфигурация потребует наличия альтернативного способа подключения к серверу, что зачастую затруднено или дорого
Процесс редактирования:
- Сделайте резервную копию файла конфигурации
- Отредактируйте текущий файл конфигурации
- Проверьте техническую корректность файла
sshd -t
- Проверьте логическую корректность файла
- С помощью
systemctl reload sshd
перезагрузите конфигурационный файл
Ряд параметров сервера #
PermitRootLogin no
Запрещает аутентификацию пользователя root, рекомендуемая настройка
AllowUsers student
Разрешает доступ только пользователю student, все другие пользователи не смогут подключиться.
AllowGroups wheel ssh
Разрешает доступ только пользователей, входящих в одну из групп wheel
или
ssh
Использование инструмента control #
Альт предоставляет инструмент control
с помощью которого можно выполнять
настройку политик безопасности: разрешать или запрещать выполнять различные
операции
Данный инструмент позволяет настраивать следующие политики:
sshd-password-auth
— разрешить или запретить аутентификацию по паролюsshd-allow-groups
— включить список групп, которым разрешён доступ
Например для отключения аутентификации по паролю:
- Нужно настроить политику:
control sshd-password-auth disabled
- Перезагрузить службу:
systemctl restart sshd