SSH (Secure Shell) — сетевой протокол прикладного уровня для защищённого удалённого управления серверами и передачи файлов. Стандартизован в RFC 4251–4254. Шифрует весь канал связи, включая аутентификацию — в отличие от Telnet, который передаёт всё в открытом виде.
Как работает
Соединение SSH проходит три фазы: согласование параметров (алгоритмы шифрования, MAC), обмен ключами (Diffie-Hellman или ECDH), аутентификация. После успешной аутентификации устанавливается зашифрованный канал для терминального сеанса, передачи файлов (SFTP) или туннелирования трафика.
Аутентификация бывает двух видов: по паролю (менее безопасно — пароль может быть похищен брутфорсом) и по ключу (RSA, Ed25519, ECDSA). При аутентификации по ключу: приватный ключ хранится у пользователя, публичный — в файле ~/.ssh/authorized_keys на сервере. Сервер отправляет зашифрованный вызов, клиент расшифровывает приватным ключом — пароль по сети не передаётся.
SSH поддерживает туннелирование: Local Port Forwarding (ssh -L 8080:localhost:80 user@server) пробрасывает локальный порт через зашифрованный туннель. Dynamic Port Forwarding создаёт SOCKS5-прокси. Remote Port Forwarding — обратный туннель.
История
SSH создал финский исследователь Тату Илонен (Tatu Ylonen) в 1995 году после перехвата паролей в сети Хельсинкского политехнического института. SSH 1.0 стал ответом на уязвимость Telnet. В 1996 году вышел SSH-2 с улучшенной безопасностью. В 1999 году вышел OpenSSH — свободная реализация SSH, форк SSH 1.2.12. OpenSSH сейчас является стандартом: он установлен по умолчанию на всех Linux-серверах, macOS, Windows 10+ и встроен в большинство маршрутизаторов.
Настройка безопасного SSH
- Отключить вход под root:
PermitRootLogin noв/etc/ssh/sshd_config - Отключить аутентификацию по паролю:
PasswordAuthentication no - Сменить порт с 22 на нестандартный (снижает шум в логах от ботов)
- Использовать Fail2ban для блокировки брутфорс-атак
- Предпочесть Ed25519 ключи:
ssh-keygen -t ed25519
На что обращать внимание
SSH — основной инструмент управления VPS и выделенными серверами. Панели управления хостингом не заменяют SSH — они лишь предоставляют GUI для типовых задач. Прямой SSH-доступ нужен для отладки, ручной настройки, работы с Docker и Git. На виртуальном хостинге SSH часто недоступен или ограничен — это одно из ключевых отличий от VPS.
Безопасность SSH
Минимальная защита SSH: смена порта с 22 на нестандартный (снижает автоматический брутфорс), отключение парольной аутентификации (PasswordAuthentication no в sshd_config), Fail2ban для блокировки перебора паролей. Ключи Ed25519 — предпочтительны перед RSA: меньше размер, выше безопасность. SSH-туннелирование позволяет безопасно пробросить порты VPS через шифрованный канал без открытия файрвола. На shared hosting SSH может быть ограничен или недоступен — зависит от тарифного плана.