Перейти к содержанию

Нюансы и пределы

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

Вход зависит от доступности Alatyr — но только для ключей из реестра

Ваш сервер спрашивает Alatyr на каждый вход. Если сервер Alatyr недоступен, вход по ключу из реестра не пройдёт.

Именно поэтому обзор советует включать оба механизма: сертификат проверяется по подписи, без обращения к Alatyr, и продолжает пускать сотрудников, пока сервер Alatyr недоступен.

Если вы решили обойтись только реестром, предусмотрите две вещи:

  • кеш последнего успешного ответа в скрипте AuthorizedKeysCommand, чтобы короткая недоступность не закрывала вход;
  • аварийный ключ администратора в обычном authorized_keys — он не зависит ни от чего.

Разрешённая сеть ограничивает, откуда спрашивают, но не о ком

Список подсетей в настройках Keyholder говорит, каким адресам можно обращаться. О ком спрашивать, он не ограничивает: любой хост из разрешённой сети может запросить ключи любого сотрудника, а не только «своего».

Это осознанный предел, а не недосмотр. Если такой границы вам мало, включите серверный токен: настройка, шаг 4.

Одна директива AuthorizedKeysCommand на область

У sshd одна такая директива на весь файл настроек плюс по одной внутри каждого блока Match. Вторую в той же области он молча пропускает — не ругается, не пишет в журнал, просто не выполняет.

Если на вашем сервере уже настроен другой источник ключей, читайте «Совмещение с FreeIPA»: там разобран блок Match, и тем же приёмом подключается любой другой источник ключей.

principal — это имя учётной записи, а не личность человека

Сервер сверяет имя, которое прислал агент, со списком разрешённых. Само по себе оно ничего не доказывает: это логин на машине сотрудника.

Привязать имя к подтверждённой личности помогает настройка «Требовать подтверждение identity у SSH-ключей» в разделе Настройки → SSH-ключи. У неё три значения: «Выключено», «Наблюдение» и «Обязательно». На «Наблюдении» вердикт записывается и виден в списке ключей, но регистрация проходит — это способ узнать, сколько устройств отсечёт строгое правило, до того как оно начнёт отказывать.

Если выбрано «Обязательно», сервер откажет в регистрации ключа, пока на том же устройстве нет одобренного сертификата user_mtls, ad_logon или k8s — то есть пока личность не подтверждена тем, что уже проверил человек.

У этого есть цена: на устройстве, где таких сертификатов нет и не будет, ключ не зарегистрируется никогда. Окно агента в этом случае покажет «Сервер отказал в регистрации ключа» и причину.

Каждый вход подтверждает сам сотрудник — и у подтверждения есть срок

Ключ ничего не подпишет, пока сотрудник не подтвердит присутствие: на его рабочем столе появляется окно запроса, и ssh ждёт ответа. Пока окно висит, вход не завершается — это не зависание, а ожидание человека.

У ожидания есть предел: около минуты. Если за это время подтверждения нет, подпись отменяется, и ssh завершается ошибкой. Это выглядит так, будто вход «долго думал и не пустил», хотя причина простая — окно осталось без ответа. Подтвердил вовремя — вход проходит за секунды.

Отсюда практическое: ssh с этим ключом имеет смысл запускать там, где виден рабочий стол сотрудника. В сценариях без экрана (задание по расписанию, конвейер) подтвердить присутствие некому, и подпись не состоится по замыслу, а не по ошибке.

Это про ОДНО подтверждение: сколько сотрудник ждёт ответа на один запрос. Отдельно от этого — сколько последующих входов подряд обходятся без нового запроса: это окно разблокировки, своё на Windows (командой alatyr-agent ssh-grant-window, до 1440 минут) и на macOS (кнопкой на уведомлении, не больше 5 минут — предел Touch ID), и его общий потолок для парка задаётся в Настройки → Безопасность по умолчанию.

Отзыв не дотягивается до открытых сессий

Отзыв означает одно: Alatyr больше не ручается за ключ. Уже открытые соединения он не разрывает и ключ с устройства не стирает. Подробности и сроки — «Отзыв доступа».

Ключ живёт в чипе — и остаётся на той машине

Закрытая часть не извлекается, значит её нельзя ни украсть файлом, ни перенести на другую машину. Обратная сторона: сотруднику, сменившему устройство, нужен новый ключ — с новой регистрацией и новым одобрением. Переносить старый некуда.

Что дальше

  • Настройка — вернуться к пошаговому порядку: что нажать в админке и что положить на ваш сервер.
  • Отзыв доступа — забрать доступ и понять, когда это подействует.
  • Реестр ключей и Keyholder API — разобраться в устройстве: эндпоинты, форматы, токены.