Formato de Chave Pública SSH

11

Eu tenho uma chave pública no formato:

---- BEGIN SSH2 PUBLIC KEY ----

Comment: "somename-20060227"
AAAAB3NzaC1yc2EAAAABJQAAAIBmhLUTJiP[and so on]==

---- END SSH2 PUBLIC KEY ----

Normalmente eu vejo chaves no formato assim:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAqof[and so on]

Posso apenas copiar a primeira chave no arquivo allowed_keys ou preciso modificá-la de alguma forma para que se pareça com a segunda? Eu acho que o primeiro foi gerado pelo PUTTYgen enquanto o segundo foi gerado pelo ssh-keygen.

Hans
fonte

Respostas:

16

use ssh-keygen -ipara converter o formato compatível com SSH2 para o formato compatível com OpenSSH.

de man ssh-keygen:

-i Esta opção lê um arquivo de chave privado (ou público) não criptografado no formato compatível com SSH2 e imprime uma chave privada (ou pública) compatível com OpenSSH no stdout. O ssh-keygen também lê o formato de arquivo de chave pública RFC 4716 SSH. Esta opção permite importar chaves de várias implementações SSH comerciais.

alexus
fonte
4

Você precisa converter a chave pública na convenção openssh:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBmhLUTJiP[and so on]== somename-20060227

Verifique também se a chave ocupa exatamente uma linha e se não foram introduzidas quebras de linha durante a cópia.

Dmitri Chubarov
fonte
4

Esta é a resposta correta e completa:

ssh-keygen -i -m PKCS8 -f public-key.pem

Boeboe
fonte
1
"RFC4716" é o key_format padrão, e -m parece ser para especificar o formato do INPUT nesta instância, não a saída, portanto, você está correto.
JimNim
Tecnicamente, a resposta "correta" de alexus NÃO está errada, pois essa resposta não está explicando a sintaxe completa - apenas apontando para qual sinalizador primário deve ser usado, deixando a necessidade de verificar -i sintaxe / uso na página de manual.
JimNim
2

Basta reescrever sua chave no formato adequado para authorized_keys:

keytype keybody keyname

Lembre-se de que "==" à direita são espaços reservados necessários para manter o comprimento da chave igual ao comprimento desejado.

Kondybas
fonte
4
A fuga "==" são Base64 estofamento
Andrew
como sei se é RSA ou DSA?
21712 Hans