Определение нескольких SSH подписало сертификаты для одного файла Идентификационных данных

Я надеюсь реализовывать подписанные сертификаты для аутентификации SSH. Я выполнил шаги здесь, и теперь пытаюсь выяснить, как я собираюсь реализовать его в своих системах.

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

Из страницы справочника 'ssh' под '-i identity_file':

ssh также попытается загрузить информацию о сертификате из имени файла, полученного путем добавления-cert.pub к именам файлов идентификационных данных

Это, кажется, подразумевает, что я должен был бы иметь несколько копий закрытого ключа (просто названный по-другому) и назвать файл сертификата соответственно в дополнение к добавлению .ssh/config записи файла для него для использования корректного сертификата.

Это - мое понимание, что при определении нескольких записей IdentityFile в .ssh/config ssh будет судить каждого из них. Однако, кажется, нет опции (по крайней мере ни один, что я могу найти в документации) указывать сертификат.

Существует ли путь к любому, указывают файл сертификата (кроме принятого-cert.pub) в .ssh/config или файле, который содержит список сертификатов для проверки?

3
задан 22 July 2014 в 18:38
2 ответа

Я не знаю хорошего способа сделать это, но я знаю два способа.

  1. Кажется, агент ssh-agent вполне счастлив хранить несколько сертификатов для одной личности. Так что если у вас, например, есть id_ed25519 в качестве идентификатора и id_ed25519-cert1.pub и id_ed25519-cert2.pub, вы можете сделать так:

    cp id_ed25519-cert1.pub id_ed25519-cert.pub.
    ssh-add id_ed25519
    cp id_ed25519-cert2.pub id_ed25519-cert.pub
    ssh-add id_ed25519
    

    И теперь оба сертификата можно использовать с идентификацией. Опять же, это не очень удачное решение.

  2. Создайте сим-ссылки для дополнительных идентификаторов, которые указывают на одну и ту же идентичность, и дайте каждому свой сертификат. Или скопируйте их прямо. Опять же, уродливо, но должно сработать.

  3. У вас может возникнуть соблазн поместить несколько сертификатов (поскольку они - каждая по одной строке) в один файл -cert.pub. В моей системе это распознаёт только первую строку.

  4. Для дополнительного удовольствия обратите внимание, что подпись удостоверения личности с помощью сертификата перезапишет без подтверждения существующий сертификат.

Основная проблема здесь, на мой взгляд, в том, что та же самая модель, которая работает с CA для хостов, не работает для авторизованных пользователей. Подпись ключа хоста (предполагая, что вы указываете принципала) - это утверждение аутентификации -- оно гласит только то, что этой подписью вы знаете, что ключ хоста сервера идентифицирует его законно.

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

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

.
1
ответ дан 3 December 2019 в 06:33

Следующее работает для меня в Debian Stretch с OpenSSH 7.4p1:

Поместите каждый сертификат в отдельный файл, например:

~/.ssh/id_ed25519-cert-ca1.pub
~/.ssh/id_ed25519-cert-ca2.pub

Затем перечислите файлы сертификатов в ~/.ssh/config:

CertificateFile ~/.ssh/id_ed25519-cert-ca1.pub
CertificateFile ~/.ssh/id_ed25519-cert-ca2.pub

Теперь команда ssh должна попробовать выбрать нужный сертификат автоматически.

От man ssh_config:

В конфигурационных файлах можно указать несколько файлов сертификатов; эти сертификаты будут проверяться последовательно. Несколько директив CertificateFile добавят к списку сертификаты, используемые для аутентификации.

2
ответ дан 3 December 2019 в 06:33

Теги

Похожие вопросы