Знакомство с 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]

Путь на удалённом сервере может быть

  • Абсолютным и начинаться с символа /
  • Относительным от домашнего каталога пользователя