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

SSH-2

SSH-2 (Secure Shell версии 2) — это протокол прикладного уровня, предназначенный для безопасного удалённого управления операционными системами и туннелирования сетевых соединений. Является второй и основной версией протокола SSH, пришедшей на смену устаревшей и уязвимой версии SSH-1. SSH-2 обеспечивает шифрование, аутентификацию и целостность передаваемых данных, защищая их от перехвата, подмены и атак типа «человек посередине» (MITM). Протокол широко применяется для администрирования серверов, передачи файлов (через SFTP и SCP), организации VPN-туннелей и автоматизации задач.

История

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

В 1996 году Юлёнен основал компанию SSH Communications Security и начал работу над второй версией протокола. SSH-2 был разработан с нуля, с учётом накопленного опыта и требований криптографии. В 1997 году проект был передан на стандартизацию в IETF (Internet Engineering Task Force). В 2006 году протокол был официально опубликован как стандарт RFC 4251 (общий обзор), RFC 4252 (аутентификация), RFC 4253 (транспортный уровень), RFC 4254 (канальный уровень) и ряд дополнительных RFC.

К 2000-м годам SSH-2 полностью вытеснил SSH-1. Большинство современных реализаций (OpenSSH, PuTTY, Dropbear) поддерживают исключительно SSH-2 или отключают поддержку первой версии по умолчанию.

Архитектура протокола

SSH-2 состоит из трёх основных уровней, работающих поверх транспортного протокола TCP (обычно порт 22):

Транспортный уровень (Transport Layer)

Обеспечивает установление соединения между клиентом и сервером, согласование алгоритмов шифрования, хэширования и сжатия, а также обмен ключами. Используется протокол Диффи — Хеллмана (DH) для создания общего секретного ключа. После согласования параметров все данные шифруются симметричным алгоритмом (например, AES, ChaCha20, 3DES) с использованием полученного сеансового ключа. Целостность данных обеспечивается кодом аутентичности сообщений (HMAC).

Аутентификация (Authentication Layer)

После установления защищённого канала клиент проходит аутентификацию. SSH-2 поддерживает несколько методов:

Канальный уровень (Connection Layer)

Управляет мультиплексированием нескольких логических каналов (channels) в рамках одного зашифрованного соединения. Каждый канал может быть:

Ключевые отличия от SSH-1

ХарактеристикаSSH-1SSH-2
Контроль целостностиCRC-32 (уязвим)HMAC (стойкий)
Симметричное шифрованиеIDEA, DES, RC4AES, ChaCha20, Blowfish и др.
Обмен ключамиФиксированный DHDH, ECDH, Curve25519
Поддержка сертификатовНетДа (OpenSSH, X.509)
Мультиплексирование каналовОграниченноеПолноценное
SFTPНетДа (RFC 4252)
Атака на целостностьВозможнаЗащищён

Реализации

OpenSSH

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

PuTTY

Популярный SSH-клиент для Windows, разработанный Саймоном Тэтхемом (Simon Tatham). Распространяется как свободное программное обеспечение. Включает в себя утилиты для генерации ключей (PuTTYgen) и агента (Pageant).

Dropbear

Лёгкая реализация SSH-2, оптимизированная для встраиваемых систем и устройств с ограниченными ресурсами (роутеры, IoT). Используется во многих дистрибутивах OpenWrt.

libssh2

Библиотека на C, предоставляющая API для встраивания SSH-2 в приложения. Используется в таких проектах, как cURL, Git (через протокол SSH) и FileZilla.

Применение

Удалённое администрирование

Основное назначение SSH-2 — безопасный доступ к командной оболочке сервера. Администраторы используют SSH для настройки, мониторинга и управления серверами в дата-центрах и облачных средах.

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

Протокол SFTP (SSH File Transfer Protocol) является подсистемой SSH-2 и позволяет безопасно копировать, удалять и управлять файлами на удалённом сервере. SCP (Secure Copy) — более старая утилита, также использующая SSH-2, но постепенно вытесняется SFTP.

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

SSH-2 позволяет перенаправлять TCP-соединения через зашифрованный канал. Это используется для:

Автоматизация и CI/CD

SSH-2 широко применяется в системах непрерывной интеграции (Jenkins, GitLab CI) для выполнения команд на удалённых серверах при развёртывании приложений. Git использует SSH-2 для безопасной аутентификации и передачи данных между репозиториями.

VPN-замены

С помощью SSH-2 можно организовать простой VPN-туннель (туннелирование уровня 2 или 3) с использованием утилит ssh -w или tun-интерфейсов, хотя для массового использования чаще применяются OpenVPN или WireGuard.

Критика и ограничения

Интересные факты

Источники

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

На главную BFOmetr →