SSH-секреты: обзор
Как Vault убирает «зоопарк» статических SSH-ключей на серверах.
SSH secrets engine — движок для управляемого доступа по SSH: вместо раздачи постоянных ключей Vault выдаёт короткоживущие подписанные сертификаты или одноразовые пароли.
Классическая боль администрирования — authorized_keys на сотнях серверов: ключи копятся, уволившиеся сотрудники остаются, отозвать доступ трудно. SSH-движок Vault решает это через эфемерный доступ.
Два режима
| Режим | Как работает | Когда |
| Signed certificates | Vault подписывает публичный ключ пользователя на короткий срок; сервер доверяет CA Vault | основной, масштабируемый |
| One-Time Password (OTP) | Vault выдаёт одноразовый пароль; на сервере helper его проверяет | когда сертификаты неудобны |
Подписанные сертификаты
Идея как в PKI, но для SSH. Vault выступает SSH CA: серверы один раз настраивают доверие к публичному ключу этого CA, после чего принимают любые сертификаты, им подписанные.
vault secrets enable -path=ssh-client-signer ssh
# Vault как SSH CA
vault write ssh-client-signer/config/ca generate_signing_key=true
# роль: кого и под какого пользователя пускать
vault write ssh-client-signer/roles/admin \
key_type=ca \
allowed_users="ubuntu,deploy" \
ttl=30m
Пользователь просит подписать свой публичный ключ и получает короткоживущий сертификат:
vault write -field=signed_key \
ssh-client-signer/sign/admin \
public_key=@$HOME/.ssh/id_rsa.pub > signed-cert.pub
ssh -i signed-cert.pub -i ~/.ssh/id_rsa [email protected]
Как работает под капотом
Сервер настроен с TrustedUserCAKeys, указывающим на публичный ключ Vault-CA. Когда пользователь подключается с подписанным сертификатом, sshd проверяет подпись CA, срок действия и список разрешённых пользователей, зашитый в сам сертификат. Никаких записей в authorized_keys не нужно — доверие централизовано в одном CA, а каждый сертификат живёт минуты. Отзыв сводится к тому, что сертификат просто истекает.
Зачем это нужно
- Нет статических ключей на серверах — нечего красть из
authorized_keys. - Доступ по запросу и на минуты — уволился сотрудник, доступ протух сам.
- Аудит — каждая подпись/выдача логируется в Vault.
- Масштаб — добавить сервер = настроить доверие к одному CA, а не раскатывать ключи.
Частые ошибки
- Длинный TTL сертификата — теряется выгода эфемерности.
- Широкий
allowed_users— пускает под привилегированных юзеров кого попало. - Не настроить
TrustedUserCAKeysна сервере — сертификаты не будут приняты.
Итог
- SSH-движок убирает статические ключи: доступ выдаётся эфемерно и централизованно.
- Основной режим — подписанные сертификаты: серверы доверяют одному SSH-CA Vault.
- Короткий TTL делает отзыв тривиальным — доступ просто истекает.