Определение простыми словами
OpenSSH — это пакет программ, через который администратор подключается к серверу из терминала, копирует файлы и пробрасывает порты. Всё это поверх зашифрованного канала, поэтому пароли и команды не видны провайдеру и сетевым посредникам. Альтернативы вроде telnet или rsh давно небезопасны и не используются.
В состав входят: демон sshd, клиент ssh, генератор ключей ssh-keygen, агент ssh-agent и утилиты scp, sftp. Поддерживает аутентификацию по паролю, ключам RSA, Ed25519, сертификатам и аппаратным токенам U2F.
Сравнение
| Утилита | Назначение | Замена |
|---|---|---|
| ssh | Подключение к серверу, проброс портов | PuTTY, MobaXterm |
| sshd | Серверный демон, принимает соединения | Dropbear (на роутерах) |
| scp/sftp | Копирование файлов поверх SSH | rsync over SSH, FileZilla |
| ssh-keygen | Генерация и конвертация ключей | PuTTYgen |
| ssh-agent | Кеш расшифрованных ключей | Pageant в Windows |
Кейсы использования
- Деплой сайта на VPS — git pull через ssh-сессию по ключу без ввода пароля.
- Бэкап БД — sftp или rsync over ssh выгружает дампы на резервный сервер.
- Туннель к закрытой админке — `ssh -L 8080:localhost:80 user@srv` пробрасывает порт через шифрованный канал.
- Ограничение доступа — только подсеть офиса в `AllowUsers` и отключение пароля.
- Негативный сценарий: оставить порт 22 открытым с авторизацией по паролю и admin-логином — за сутки придёт несколько тысяч попыток брутфорса. Решение — ключи, fail2ban и нестандартный порт.
Технические детали
# Безопасная конфигурация /etc/ssh/sshd_config
Port 2222 # сменить порт с 22
PermitRootLogin prohibit-password # root только по ключу
PasswordAuthentication no # пароли отключены
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 30
AllowUsers deploy admin # белый список логинов
# Применить и перезапустить
sshd -t # проверка конфига
systemctl restart sshd
# Генерация надёжного ключа Ed25519
ssh-keygen -t ed25519 -a 100 -C "deploy@srv"
# Копирование публичного ключа на сервер
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 deploy@srv
# Проверка подключения с подробным логом
ssh -vvv -p 2222 deploy@srv
🔥 Где это применяется
Частые вопросы
Стоит ли менять порт SSH с 22?
Это не защита, а гигиена: на 22 идёт 90% брутфорс-попыток, на 2222 — единицы. Логи становятся читаемыми, а fail2ban быстрее находит реальные угрозы.
Какой ключ выбрать — RSA или Ed25519?
Ed25519 короче, быстрее и надёжнее при равной стойкости. RSA-2048 берут только для совместимости со старым серверным ПО, RSA-1024 уже считается слабым.
Как пускать на сервер только по аппаратному токену?
Сгенерировать sk-ed25519-ключ через `ssh-keygen -t ed25519-sk`, добавить публичный в authorized_keys, отключить пароли. При логине OpenSSH потребует касание YubiKey.