Открыть сервис

Протокол SSH

SSH (Secure Shell) — это сетевой протокол прикладного уровня, предназначенный для удалённого управления операционными системами и туннелирования TCP-соединений. Обеспечивает шифрование, аутентификацию и целостность передаваемых данных, что делает его безопасной альтернативой незащищённым протоколам (Telnet, rlogin, FTP).

История

Протокол SSH был разработан в 1995 году финским исследователем Тату Юлёненом (Tatu Ylönen) из Хельсинкского технологического университета. Первая версия (SSH-1) была создана после того, как в сети университета была зафиксирована атака с перехватом паролей (сниффинг). Юлёнен выпустил реализацию протокола как свободное программное обеспечение, что привело к его быстрому распространению.

К концу 1995 года SSH-1 обслуживал около 20 000 пользователей в 50 странах. В 1996 году вышла версия SSH-2, которая устранила ряд уязвимостей первой версии и ввела более надёжную архитектуру безопасности. SSH-2 была стандартизирована Рабочей группой IETF (Internet Engineering Task Force) в 2006 году в серии документов RFC (RFC 4250–4256).

В 1998 году Тату Юлёнен основал компанию SSH Communications Security, которая начала коммерческое лицензирование протокола. В 1999 году разработчик OpenBSD Бьорн Грёнвалль создал OpenSSH — открытую реализацию протокола, которая стала стандартом де-факто в большинстве Unix-подобных систем и в настоящее время входит в состав Linux, macOS, FreeBSD и других ОС.

Архитектура и принцип работы

SSH использует архитектуру «клиент-сервер». Клиентское приложение (ssh-клиент) инициирует соединение с серверным демоном (sshd), работающим на удалённой машине. Соединение устанавливается по TCP-порту 22 (стандартный номер порта, зарегистрированный IANA).

Протокол состоит из трёх основных уровней:

Транспортный уровень

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

После обмена ключами устанавливается симметричное шифрование. Сервер аутентифицируется с помощью ключа хоста (host key), который клиент проверяет по базе известных ключей (файл known_hosts).

Уровень аутентификации

После установления защищённого канала клиент проходит аутентификацию. Основные методы:

Соединительный уровень

После аутентификации создаётся несколько логических каналов (channels) внутри одного шифрованного соединения. Каналы используются для:

Ключевые возможности

Удалённое управление

SSH позволяет выполнять команды на удалённой системе в защищённом режиме. Пользователь получает доступ к командной оболочке (shell) удалённой машины, что эквивалентно работе за локальным терминалом.

Туннелирование (проброс портов)

SSH поддерживает три типа туннелирования:

Передача файлов

На базе SSH работают два основных протокола передачи файлов:

Агент пересылки аутентификации (SSH Agent Forwarding)

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

Реализации

OpenSSH

Наиболее распространённая реализация, разрабатываемая проектом OpenBSD. Входит в состав большинства дистрибутивов Linux, macOS (начиная с версии 10.2), FreeBSD и многих других Unix-подобных систем. Поддерживается на Windows через подсистему WSL или встроенный клиент (начиная с Windows 10).

Коммерческие реализации

Библиотеки

Безопасность

Известные уязвимости

Рекомендации по безопасной настройке

Применение

SSH является основным инструментом для:

Альтернативы

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →