Васильев Андрей Михайлович, 2024
Версии презентации
SSH (Secure Shell, «безопасная оболочка») — это протокол удалённого управления компьютера с ОС семейства Linux
Существует несколько реализаций SSH-сервера, рассмотрим наиболее популярное и проверенное решение — сервер OpenSSH
В операционных системах Альт данный сервер поставляется в пакете
openssh-server
После установки данного пакета службу сервера неолбходимо запустить:
systemctl enable --now sshd
Обратите внимание, что служба называется не также как и пакет
Клиентские приложения поставляются в пакете 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-сервер поддерживает множество вариантов по выполнению аутентификации:
Рассмотрим наиболее часто применяемые: по паролю и по ключу пользователя
~/.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-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 в ОС семейства Альт находится по пути
/etc/openssh/sshd_config
, а его описание находится в 5-м разделе руководства
Процесс редактирования сервера sshd надо выполнять аккуратно, т.к. некорректная конфигурация потребует наличия альтернативного способа подключения к серверу, что зачастую затруднено или дорого
Процесс редактирования:
sshd -t
systemctl reload sshd
перезагрузите конфигурационный файлPermitRootLogin no
Запрещает аутентификацию пользователя root, рекомендуемая настройка
AllowUsers student
Разрешает доступ только пользователю student, все другие пользователи не смогут подключиться.
AllowGroups wheel ssh
Разрешает доступ только пользователей, входящих в одну из групп wheel
или
ssh
Альт предоставляет инструмент control
с помощью которого можно выполнять
настройку политик безопасности: разрешать или запрещать выполнять различные
операции
Данный инструмент позволяет настраивать следующие политики:
sshd-password-auth
— разрешить или запретить аутентификацию по паролюsshd-allow-groups
— включить список групп, которым разрешён доступНапример для отключения аутентификации по паролю:
control sshd-password-auth disabled
systemctl restart sshd