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 создаёт слушающий сокет на заданном порту и ожидает подключений. Для каждого входящего соединения порождается отдельный дочерний процесс (или поток), что позволяет демону обслуживать одновременно множество клиентов.
Соединение развивается в несколько этапов:
- Переговоры (handshake). Клиент и сервер согласовывают версию протокола, набор алгоритмов шифрования, обмена ключами и MAC-функций.
- Обмен ключами. Реализуется протокол Diffie-Hellman (обычно с эллиптическими кривыми), в результате которого стороны вычисляют общий сеансовый ключ. Ключи генерируются заново для каждого подключения.
- Аутентификация сервера. Сервер предъявляет клиенту свой открытый ключ; клиент проверяет его по известному списку (файл
known_hosts). При несовпадении выдаётся предупреждение о возможном «атаке человека посередине». - Аутентификация пользователя. Клиент подтверждает личность одним из поддерживаемых методов.
- Открытие каналов. После успешной аутентификации устанавливается зашифрованный канал, поверх которого запрашиваются сеанс 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
