🔐 SSH: главный ключ от всех серверов планет
Кратко: SSH (Secure Shell) — это протокол, который позволяет открыть окно в чужой компьютер через интернет и работать там как на своём. Без него админы не могли бы управлять серверами из дома, разработчики — заливать код, а облака — существовать в принципе. Это главный инструмент удалённого управления, который есть в каждом Linux-сервере.
▫️Основные этапы развития: · 1995 г. — Финский исследователь Тату Илёнен разрабатывает первую версию SSH-1. До него админы пользовались telnet, который передавал логины и пароли в открытом виде (любой мог перехватить). Илёнену надоело, что пароли гуляют по сети голыми · Июль 1995 г. — SSH (Secure Shell) выпущен как бесплатный софт для академических целей. Мир выдыхает: теперь можно править конфиги на удалённом сервере, не боясь, что пароль украдут · 1996 г. — Выходит SSH-2 с улучшенной безопасностью и новым протоколом. Старую версию постепенно признают устаревшей · Конец 1990-х — Илёнен пытается коммерциализировать SSH, появляется компания SSH Communications Security. Сообщество негодует: открытый код начинает отставать от коммерческой версии · 1999 г. — Разработчик Бьёрн Грёнвалл форкает последнюю открытую версию и создаёт OpenSSH. Проект быстро встраивают в OpenBSD, а потом и во все Linux-дистрибутивы · 2000–2026 гг. — OpenSSH становится стандартом де-факто. Он есть везде: в каждой VPS, в каждом контейнере, в macOS, даже в Windows 10/11 (встроенный клиент и сервер)
▫️Как работает (простыми словами): · Клиент-сервер — на удалённой машине крутится SSH-сервер (sshd), который слушает 22-й порт. Вы с ноутбука подключаетесь клиентом (ssh) · Шифрование всего — в отличие от telnet, SSH шифрует абсолютно всё: логин, пароль, все команды, вывод команд. Перехватить трафик бесполезно — будет мусор · Аутентификация — можно заходить по паролю, но безопаснее по ключам: вы генерируете пару ключей (приватный и публичный), публичный кладёте на сервер. При подключении сервер проверяет, есть ли у вас приватный ключ · Туннелирование — SSH умеет пробрасывать порты. Можно зашифровать любой трафик (например, базы данных или VNC) через SSH-туннель
▫️Ключевые возможности: · Удалённый shell — работаете на сервере как на своём компе · SCP / SFTP — копирование файлов по SSH · Проброс портов (Forwarding) — локальный, удалённый, динамический (SOCKS-прокси) · Агент и forwarding ключей — чтобы не вводить пароль на каждом прыжке · X11 Forwarding — запуск графических приложений с сервера · SSH-туннели — организация VPN на коленке
▫️Почему OpenSSH победил всех: · Открытый код — можно проверить, нет ли там бэкдоров · Встроен везде — не надо ставить, он уже есть · Надёжность — работает годами без перезагрузки · Стандартизация — RFC 4251–4256 описывают протокол, все реализации совместимы · Экосистема — вокруг выросли тысячи инструментов: ansible, rsync, git (через SSH), scp, sftp
▫️Безопасность SSH (как не взломают): · Отключите вход по паролю — только ключи. Пароли можно перебрать · Смените порт — с 22-го на что-то другое (отсечёт 99% ботов) · Запретите root-login — заходите под обычным пользователем, потом sudo · Используйте fail2ban — банить тех, кто стучится с неправильным паролем · Двухфакторка — можно добавить Google Authenticator · Регулярно чистите authorized_keys — убирайте ключи уволенных сотрудников
▫️Конфиг ~/.ssh/config (чтобы не писать длинные команды) Host myserver HostName 192.168.1.100 User admin Port 2222 IdentityFile ~/.ssh/mykey
▫️Полезные команды (шпаргалка)
🔹 Базовое подключение ssh user@server — подключение к серверу ssh -p 2222 user@server — подключиться к нестандартному порту ssh -i ~/.ssh/private_key user@server — подключиться с конкретным ключом
🔹 Копирование файлов scp file.txt user@server:/home/user/ — скопировать файл на сервер scp user@server:/home/user/file.txt ./ — скачать файл с сервера rsync -avz -e ssh /local/path/ user@server:/remote/path/ — синхронизация папок (rsync по SSH)
#ssh #openssh #linux #администрирование #безопасность #devops