4

Я использую открытый ключ SSH для подключения к ряду серверов. Серверы используют SSH CA для управления авторизованными пользователями. Основная концепция описана здесь: https://www.digitalocean.com/community/tutorials/how-to-create-an-ssh-ca-to-validate-hosts-and-clients-with-ubuntu

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

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

ssh(1) will try to load certificate information from the filename
obtained by appending -cert.pub to the path of a specified IdentityFile.

Простое добавление нового сертификата в этот файл (как вы сделали бы для authorized_keys) также не работает. В этом случае SSH все равно будет распознавать только первый сертификат и игнорировать остальную часть файла.

Кто-нибудь знает, как сказать SSH, что у меня есть второй сертификат для этого ключа?

2 ответа2

3

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

cp ~.ssh/id_rsa id_rsa_group2
cp ~.ssh/id_rsa.pub id_rsa_group2.pub # probably not necessary

Затем сопоставьте имя сертификата, оно должно быть id_rsa_group2-cert.pub

Проверьте это: ssh -i .ssh/id_rsa_group2 ip_of_your_server

Затем сделайте автоматический выбор ключа, отредактировав ~/.ssh/config

# For your first certificate:
Host a
    User root
    IdentityFile ~/.ssh/id_rsa

# For your new certificate
Host b
    User root
    IdentityFile ~/.ssh/id_rsa_group2
1

Для этого вы можете использовать опцию конфигурации CertificateFile либо в командной строке: ssh -o CertificateFile=~/.ssh/second_certificate.pub host_b либо установив его в файле конфигурации (~/.ssh/config).

Host host_b
    CertificateFile `~/.ssh/second_certificate.pub

Поскольку в обоих случаях используется один и тот же сертификат, он должен хорошо работать с вашим ssh-agent .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .