Какие протоколы использовались для удалённого управления серверами до SSH?

«Какие протоколы использовались для удалённого управления серверами до SSH?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

До внедрения SSH (Secure Shell) в середине 90-х для удалённого доступа и управления UNIX-системами в основном использовались незашифрованные протоколы, что создавало критическую уязвимость.

Основные протоколы-предшественники:

  1. Telnet (порт 23): Стандартный протокол для интерактивного текстового доступа к командной оболочке. Все данные (включая логины и пароли) передавались в открытом виде.
    telnet 192.168.1.100 23
    Trying 192.168.1.100...
    Connected to 192.168.1.100.
    login: root
    password: plaintext_password # Передаётся без шифрования!
  2. rlogin (порт 513) и rsh (порт 514): Протоколы от Berkeley, позволявшие доступ на основе доверия между хостами (файлы /etc/hosts.equiv, ~/.rhosts). Аутентификация также не была защищена, а модель доверия была уязвима для спуфинга IP.
    rsh server.example.com -l user ls /tmp

Ключевые проблемы этих протоколов:

  • Перехват трафика (sniffing): Злоумышленник в сети мог легко перехватить логины, пароли и все выполняемые команды.
  • Подмена соединения (spoofing): Для rlogin/rsh.
  • Отсутствие целостности данных: Трафик мог быть незаметно изменён.

SSH решил эти проблемы, предоставив:

  • Сильное шифрование всего трафика (AES, ChaCha20).
  • Аутентификацию на основе паролей (зашифрованных) или, что более важно, криптографических ключей (RSA, Ed25519).
  • Целостность данных через хэширование (HMAC).
  • Туннелирование других протоколов (SCP, SFTP, портов).

В современном DevOps SSH — это основной инструмент для безопасного доступа к серверам, контейнерам и оркестраторам, а также для автоматизации через ключи.