Битлента
Словарь терминов3 мин чтения·

SSH-ключи: как их создавать, хранить и использовать

SSH-ключи заменяют пароль парой файлов: закрытым и открытым. Как устроена аутентификация по ключу, как сгенерировать пару и не потерять доступ.

Ключ вместо пароля

SSH-ключ — пара криптографических ключей, которая используется при входе на сервер вместо пароля. Закрытый ключ остаётся у вас и никому не передаётся, открытый копируется на сервер. При подключении сервер проверяет, что вы владеете закрытым ключом, но сам ключ по сети не отправляется.

Такая схема устойчива к подбору и подслушиванию: пароль можно угадать, а ключ вида современных алгоритмов подобрать нереально. Кроме того, ключ защищает от вводимого вручную пароля, который легко подсмотреть или перехватить.

Есть и вариант с ключами на аппаратных токенах: закрытая часть хранится в устройстве и не извлекается из него, а вход требует физического присутствия. Он защищает даже от вредоносных программ на компьютере, хотя настройка чуть сложнее.

Как проходит проверка

При входе клиент сообщает, какие ключи у него есть, а сервер, найдя открытую часть в списке разрешённых, отправляет случайный вызов. Клиент подписывает его закрытым ключом, и сервер проверяет подпись открытой частью. Если подпись верна, доступ выдаётся. Механизм основан на асимметричной криптографии, разобранной на отдельных страницах словаря.

Сервер в этом обмене тоже доказывает подлинность собственным ключом хоста, и клиент запоминает его отпечаток при первом подключении, чтобы обнаружить подмену в будущем.

Отпечаток ключа сервера — короткая контрольная сумма, которую можно сверить по независимому каналу. Если при очередном подключении клиент сообщает о смене отпечатка, это повод остановиться и выяснить причину: переустановка сервера либо попытка подмены.

Генерация пары

Команда ssh-keygen создаёт ключи; по умолчанию современные версии используют алгоритм Ed25519, но можно указать и RSA достаточной длины ключом -t. Программа спросит место сохранения и парольную фразу, которая шифрует закрытый файл. Получаются два файла: закрытый без расширения и открытый с окончанием pub.

Открытый ключ добавляется на сервер в файл authorized_keys внутри папки .ssh пользователя; для этого существует ssh-copy-id, автоматизирующий копирование.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Хранение и защита

Закрытый ключ — главный секрет. Его нельзя отправлять по почте, выкладывать в репозитории и хранить в общих папках. В Linux файл должен иметь права 600, а каталог .ssh — 700; клиент не станет использовать слишком открытый ключ. Парольная фраза шифрует файл, так что похищенная копия не сработает без неё.

Для удобства применяют ssh-agent: он держит расшифрованный ключ в памяти на время сеанса, и парольную фразу не нужно вводить при каждом подключении. Отдельные ключи для разных серверов и задач ограничивают ущерб, если один будет скомпрометирован.

Распространённые ошибки

«Открытый ключ секретный». Нет, его можно публиковать, вся защита в закрытом. «Ключ без парольной фразы удобнее». Удобнее, но кража файла даёт немедленный доступ. «Потеря ключа — не проблема». Если это единственный способ входа, а пароли отключены, доступ на сервер пропадёт, и нужен второй путь восстановления через консоль хостера.

Часто забывают удалять открытые ключи уволенных сотрудников и старых устройств из authorized_keys, из-за чего доступ остаётся навсегда.

Полезно вести список серверов и ключей, которые куда были добавлены, и периодически заменять ключи на новые. Для рабочих проектов часто вводят отдельные ключи для каждого устройства, чтобы отозвать одно из них без последствий для остальных.

Как проверить свои ключи

Посмотрите содержимое папки .ssh в домашнем каталоге. Команда ssh-keygen -l -f и путь к файлу выводит отпечаток и длину. Проверьте права файлов. На сервере откройте authorized_keys и убедитесь, что там лишь нужные ключи с понятными комментариями. Для дополнительной защиты отключите вход по паролю в настройках SSH-сервера, но только после проверки, что вход по ключу работает.

Сервер записывает вход по ключам в журнал, поэтому проверить, какой именно ключ использован, можно по отпечатку в записи о подключении. Сравните его с отпечатками на своих устройствах.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
sshключибезопасность

Часто задаваемые вопросы

Читайте также