Использование SSH pubkey с несколькими сертификатами

316
jan

Я использую открытый ключ 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, что у меня есть второй сертификат для этого ключа?

4

2 ответа на вопрос

3
pim

Поскольку вы используете один и тот же закрытый ключ и 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 
Я должен попробовать это. Знаете ли вы, требуется ли мне два раза добавить свой закрытый ключ в ssh-agent, или он поймет, что это один и тот же ключ для обеих личностей? jan 6 лет назад 0
Я нашел что-то интересное, но достаточно другое, чтобы опубликовать другой ответ pim 6 лет назад 0
1
pim

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

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

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

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