Usando o pubkey SSH com vários certificados

4

Estou usando uma chave pública SSH para me conectar a vários servidores. Os servidores usam uma CA SSH para gerenciar usuários autorizados. O conceito básico é descrito aqui: link

Portanto, ao lado dos arquivos id_rsa e id_rsa.pub usuais, também tenho um arquivo id_rsa-cert.pub que contém o certificado. Tudo isso funciona muito bem, eu posso fazer logon imediatamente em novas máquinas que estão configuradas para confiar na chave da AC que foi usada para assinar minha chave.

No entanto, agora tenho minha chave assinada por uma CA diferente para um conjunto diferente de máquinas. A questão é agora, como posso dizer ao SSH que agora existem dois certificados para essa chave. Na documentação, parece não haver maneira de especificar um segundo arquivo de certificado:

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

O simples acréscimo do novo certificado a este arquivo (como você faria para authorized_keys ) também não funciona. Nesse caso, o SSH ainda reconhecerá apenas o primeiro certificado e ignorará o restante do arquivo.

Alguém sabe como dizer ao SSH que tenho um segundo certificado para essa chave?

    
por jan 27.11.2017 / 13:47

2 respostas

3

Como você usa a mesma chave privada e ssh usará o nome da chave para adivinhar o nome do certificado, copie sua chave privada e pública:

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

Em seguida, faça o nome da correspondência do certificado, que deve ser id_rsa_group2-cert.pub

Teste: ssh -i .ssh/id_rsa_group2 ip_of_your_server

Em seguida, faça a seleção automática da chave editando ~/.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
    
por 27.11.2017 / 14:19
1

Você pode usar a opção de configuração CertificateFile para essa finalidade, seja na linha de comando: ssh -o CertificateFile=~/.ssh/second_certificate.pub host_b ou configurando-a no arquivo de configuração ( ~/.ssh/config ).

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

Como em ambos os casos, o mesmo certificado é usado, deve funcionar bem com o seu ssh-agent .

    
por 27.11.2017 / 16:44