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

SSH-демон: назначение и устройство

SSH-демон (sshd) — серверная программа протокола Secure Shell (SSH), обеспечивающая приём и обработку входящих зашифрованных соединений от удалённых клиентов. Демон запускается на удалённом компьютере (сервере) и слушает сетевой порт (по умолчанию 22), выполняя аутентификацию подключившихся пользователей и открывая им защищённый канал для удалённого управления, передачи файлов и туннелирования. Наиболее распространённая реализация — OpenSSH, входящая практически во все современные дистрибутивы Linux и UNIX-подобных систем.

Назначение и роль

SSH-демон решает три основные задачи:

  • Удалённый доступ к командной строке. После успешной аутентификации пользователь получает интерактивный shell на сервере, эквивалентный локальному терминалу.
  • Безопасная передача файлов. Протокол SSH поддерживает подпротоколы SCP и SFTP, работающие поверх того же зашифрованного канала.
  • Туннелирование. sshd позволяет создавать прямые (local) и обратные (remote) туннели, пробрасывая трафик других протоколов (HTTP, базы данных, RDP) через зашифрованное соединение.

До появления SSH удалённое администрирование выполнялось по незашифрованным протоколам Telnet и rsh, передача паролей и данных в открытом виде. SSH, разработанный Тату Йёнссоном и Финном Биллундом в 1995 году для компании SSH Communications Security, заменил их, обеспечив шифрование, аутентификацию сервера и клиента и защиту от подмены соединения.

Устройство и принцип работы

При запуске sshd создаёт слушающий сокет на заданном порту и ожидает подключений. Для каждого входящего соединения порождается отдельный дочерний процесс (или поток), что позволяет демону обслуживать одновременно множество клиентов.

Соединение развивается в несколько этапов:

  1. Переговоры (handshake). Клиент и сервер согласовывают версию протокола, набор алгоритмов шифрования, обмена ключами и MAC-функций.
  2. Обмен ключами. Реализуется протокол Diffie-Hellman (обычно с эллиптическими кривыми), в результате которого стороны вычисляют общий сеансовый ключ. Ключи генерируются заново для каждого подключения.
  3. Аутентификация сервера. Сервер предъявляет клиенту свой открытый ключ; клиент проверяет его по известному списку (файл known_hosts). При несовпадении выдаётся предупреждение о возможном «атаке человека посередине».
  4. Аутентификация пользователя. Клиент подтверждает личность одним из поддерживаемых методов.
  5. Открытие каналов. После успешной аутентификации устанавливается зашифрованный канал, поверх которого запрашиваются сеанс shell, копирование файлов или туннель.

Методы аутентификации

OpenSSH поддерживает несколько способов подтверждения личности:

МетодОписание
По паролюПользователь вводит пароль от учётной записи; пароль передаётся только внутри зашифрованного канала
По ключу (publickey)Клиент подписывает случайные данные приватным ключом; сервер проверяет подпись соответствующим открытым ключом из файла authorized_keys
GSSAPIИнтеграция с системами корпоративной аутентификации (Kerberos)
hostbasedАутентификация на основе доверия между хостами; применяется редко

Ключевой механизм (publickey) считается наиболее безопасным и рекомендуется для серверов с удалённым доступом. Приватный ключ хранится только у пользователя, открытый размещается на сервере; пароль при этом может вообще не использоваться.

Конфигурация

Главный конфигурационный файл демона — /etc/ssh/sshd_config. В нём задаются параметры работы сервера, ключевые из них:

  • Port — номер слушающего порта (по умолчанию 22);
  • ListenAddress — адреса, на которых демон принимает соединения;
  • PermitRootLogin — разрешён ли вход под root (по умолчанию в большинстве дистрибутивов запрещён);
  • PasswordAuthentication — включена ли аутентификация по паролю;
  • PubkeyAuthentication — включена ли аутентификация по ключу;
  • AllowUsers / DenyUsers — списки разрешённых и запрещённых пользователей;
  • X11Forwarding — проброс графического интерфейса X11;
  • Subsystem sftp — путь к серверу SFTP.

После изменения конфигурации демон перезапускается командой systemctl restart sshd (системы с systemd) или service ssh restart.

Управление демоном

В дистрибутивах на базе systemd sshd управляется стандартными командами systemctl start|stop|restart|status sshd. В Debian и Ubuntu демон называется ssh, а не sshd. Логи демона записываются в системный журнал (journalctl) или в файлы /var/log/auth.log / /var/log/secure в зависимости от дистрибутива.

Система безопасности

Демон использует собственные средства защиты:

  • /etc/ssh/ssh_host_*_key — приватные ключи сервера, доступные только root;
  • known_hosts — файл клиента с отпечатками ключей серверов;
  • authorized_keys — файл пользователя с открытыми ключами, разрешёнными для входа;
  • утилита ssh-keygen — генерация пар ключей;
  • утилита ssh-agent — кэширование приватных ключей с защитой паролем.

Для повышения безопасности серверов часто отключают аутентификацию по паролю, меняют стандартный порт, ограничивают доступ по IP через firewall (iptables, nftables, firewalld) и подключают fail2ban для блокировки брутфорса.

Применение

sshd является стандартным инструментом удалённого администрирования серверов, виртуальных машин и встраиваемых систем. Он входит в состав панелей управления хостингом, систем конфигурационного управления (Ansible, SaltStack) и инструментов развёртывания (Vagrant, Docker при пробросе томов). Множество корпоративных систем используют SSH-туннели для защищённого доступа к внутренним ресурсам.

Источники:

  • Проект OpenSSH — официальная документация (openssh.com)
  • RFC 4251–4254 — протокол Secure Shell
  • Руководство по администрированию Linux (Олег Киселев, «Linux. Подробное руководство»)
  • Мануалы sshd_config(5), sshd(8) дистрибутива Ubuntu
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru