SSH-ключ — инструмент беспарольной аутентификации в SSH-соединениях. Состоит из двух частей: приватного ключа (хранится только у пользователя) и публичного ключа (размещается на сервере). При подключении клиент доказывает владение приватным ключом через криптографический протокол — сервер проверяет соответствие публичному ключу без передачи пароля.
Как работает
Генерация пары ключей:
ssh-keygen -t ed25519 -C "user@hostname"
# Или RSA-4096:
ssh-keygen -t rsa -b 4096 -C "user@hostname"
Создаются два файла: ~/.ssh/id_ed25519 (приватный, chmod 600) и ~/.ssh/id_ed25519.pub (публичный). Добавление публичного ключа на сервер:
ssh-copy-id user@server-ip
# Или вручную:
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
При подключении SSH выполняет challenge-response: сервер шифрует случайное число публичным ключом клиента, клиент расшифровывает приватным — это доказывает владение без передачи секрета. Ed25519 — современный алгоритм, предпочтительнее RSA-2048 (быстрее, компактнее, такая же стойкость).
История
SSH (Secure Shell) разработан Тату Юлёненом в Финляндии в 1995 году после атаки сниффинга в сети Хельсинкского университета. OpenSSH — открытая реализация — появилась в 1999 году. Ed25519 введён в OpenSSH 6.5 в 2014 году на основе алгоритма Daniel Bernstein (2011).
Связь с хостингом
SSH-ключи — обязательный стандарт безопасности для подключения к VPS. Хостинг-провайдеры предлагают добавить публичный ключ при создании сервера — он устанавливается автоматически. Отключение парольной аутентификации (PasswordAuthentication no в sshd_config) после настройки ключей — базовая мера защиты. SSH-ключи используются в CI/CD для автоматизированного деплоя через Git hooks и GitHub Actions.
Типы SSH-ключей
RSA 4096 — стандарт совместимости. Ed25519 — рекомендован: короче (256 бит), быстрее, безопаснее. ECDSA — для устаревших систем. Создание: ssh-keygen -t ed25519 -C "comment". Паспрейз на приватный ключ — защита от кражи файла ключа.
Настройка авторизации по ключам
Публичный ключ → ~/.ssh/authorized_keys на сервере. Права: chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys. В /etc/ssh/sshd_config: PasswordAuthentication no после проверки ключей. systemctl restart sshd. Fail2ban дополнительно блокирует брутфорс.
Управление ключами в команде
ssh-agent кэширует расшифрованные ключи в сессии. ssh-add добавляет ключ. Agent forwarding (-A) — использование локальных ключей на удалённых серверах без копирования. HashiCorp Vault или Teleport — централизованное управление доступом по SSH для команд.