Знакомство с SSH-протоколом #
Васильев Андрей Михайлович, 2025
Версии презентации
Технология SSH #
SSH (Secure Shell, «безопасная оболочка») — это протокол удалённого подключения к компьютеру, зачастую доступный в UNIX-подобных ОС
Базовое использование SSH — запуск интерактивной сессии командного интерпретатора на удалённом компьютере безопасным образом
- SSH поддерживает множество актуальных алгоритмов шифрования
- SSH-клиенты и SSH-серверы доступны для большинства сетевых ОС
- SSH позволяет безопасно передавать в незащищённой среде практически любой другой сетевой протокол
- SSH может использовать сжатие передаваемых данных перед отправкой
Принципиальная схема работы #
Для работы данной технологии необходимо:
- Запустить и настроить постоянно работающий SSH-сервер
- Выполнить подключение с помощью SSH-клиента
Обеспечение защиты соединения происходит благодаря
- Первоначальному обмену ключами для установки зашифрованного соединения
- Использованию шифрования для защиты передаваемых данных
Настоятельно рекомендуется ознакомиться с деталями работы данного протокола, т.к. данные или похожие технологии шифрования используются в других протоколах
Возможности SSH-подключения #
- Выполнение интерактивных команд на удалённом сервере
- Выполнение одной команды на удалённом сервере
- Копирование файлов между локальным и удалённым сервером
- Перенаправление TCP и UNIX-сокетов между компьютерами
- Создание сетевого туннеля между компьютерами
- Проксирование запросов через Socks-прокси
И других сценариев, которые реализуются с помощью обозначенных выше технологий
Установка 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
Базовая авторизация #
Для подключения необходимо пройти процедуру авторизации, для которой используется либо авторизация по паролю, либо по ключу
Интерактивный запуск команд #
Одно из наиболее часто используемых действий по протоколу SSH — выполнение интерактивных команд на удалённом компьютере
- Если не указать команду для запуска на удалённом сервере, то на сервере будет запущен интерактивный интерпретатор команд
- Интерактивный интерпретатор запускается с правами того пользователя, под которым прошла аутентификация
- У удалённого пользователя может быть запрещён запуск интерактивного интерпретатора или подключение к удалённому серверу
- Когда он завершит свою работу (по вводу команды
exit
, например), будет завершено и SSH-соединение
Копирование файлов #
- По протоколу SSH можно не только выполнять команды, но также можно и передавать файлы по протоколам SCP, SFTP и rsync
- У каждого из них есть свои преимущества и недостатки
- Существуют инструменты с названиями, совпадающими с названием протокола
Приложение scp
#
- Приложение используется в командном режиме
- Можно копировать как один файл, так и директории
Приложение sftp
#
- Приложение используется в интерактивном режиме
- Предоставляет широкие возможности по манипулированию файлами
Приложение rsync
#
- Приложение используется в командном режиме
- Решает задачу синхронизации каталогов
Использование scp
#
Краткая справка по использованию приложения
scp [-P port] [-r] source ... target
- Для указания порта необходимо использовать
-P
, а не-p
, как уssh
- Для копирования каталогов необходимо использовать рекурсивное копирование
-r
Указание пути к файлу #
- Локальный путь, обычные требования
- Удалённый путь в формате
[user@]host:[path]
Путь на удалённом сервере может быть
- Абсолютным и начинаться с символа
/
- Относительным от домашнего каталога пользователя