ssh-keygen não cria chave privada RSA

72

Estou tentando criar uma chave privada e está tendo um problema.

Quando uso ssh-keygen -t rsa -b 4096 -C "[email protected]", recebo uma chave privada no seguinte formato.

-----BEGIN OPENSSH PRIVATE KEY-----
uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END OPENSSH PRIVATE KEY-----

E isso não está sendo aceito para um aplicativo que estou tentando usar.

Estou esperando uma chave no seguinte formato RSA.

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,25737CC2C70BFABADB1B4598BD8AB9E9

uTo43HGophPo5awKC8hoOz4KseENpgHDLxe5UX+amx8YrWvZCvsYRh4/wnwxijYx
...
-----END RSA PRIVATE KEY-----

Como crio o formato correto? Isso é estranho, porque todos os outros mac que eu cria criam o formato correto, exceto aquele com o qual estou tendo problemas.

Estou em um novo Mac OS Mojave instalado

Lua
fonte
e os outros Macs não estão no Mojave? Também estou no Mojave e recebo o "novo" formato de chave openssh. Então, eu suponho que outros Macs estejam em versões inferiores. Verifique a versão do OpenSSL usada.
Zina
@Zina outros Macs também estão no Mojave e têm a mesma versão do OpenSSL.
Lua
RSA deve ser o tipo padrão. E se você omitir a -t rsaopção completamente?
guzzijason
@guzzijason é o mesmo. É isso que está me deixando louco. Mesmo se eu omitir o -t rsa no meu mac (funcionando um), ele gera o RSA corretamente.
Lua
Eu tive o mesmo problema. Como solução alternativa, usei a versão mais antiga do openssh para gerar chave. Você pode testar se sua chave gerada está correta com openssl rsa -text -in key_file -passin 'pass: passphrase'. A versão 7.4p1-16 funciona.
Atype 14/1118

Respostas:

76

Enfrentei o mesmo problema recentemente (após a atualização para o mojave 10.14.1), eis duas soluções possíveis para esse problema.

  • Faça o downgrade do seu binário ssh-keygen (você pode facilmente obter a versão antiga a partir de qualquer imagem linux / docker)

OU

  • Adicione opção -m PEMao seu comando ssh-keygen. Por exemplo, você pode executar ssh-keygen -m PEM -t rsa -b 4096 -C "[email protected]"para forçar o ssh-keygen a exportar como PEMformato.

Parece que na versão atual do ssh-keygen no mojave, o formato de exportação padrão é RFC4716o mencionado aqui

Apolozeus
fonte
11
O formato padrão da chave pública de exportação é realmente rfc4716, mas o formato no Q é um formato interno de chave privada e é o 'novo' formato do OpenSSH, que não existia em 1999 (!) E não é mais descrito na atual; tente 6.0 a 6.3.
David_thompson_085
3
Não consigo editar a resposta, mas fique claro que 1. e 2. são soluções independentes, não etapas seqüenciais. Você NÃO precisa fazer o downgrade para uma geração de chave única. Basta adicionar o-m PEM
sdoxsee 23/01
50

Novas chaves com o formato de chave privada OpenSSH podem ser convertidas usando o utilitário ssh-keygen no formato PEM antigo.

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa

Não é necessário fazer o downgrade para o OpenSSH mais antigo apenas para atingir esse resultado.

mydeardiary
fonte
Sim. Como eu já mencionei nos comentários sobre a resposta aceita. serverfault.com/questions/939909/…
sdoxsee 25/01
9
O que não está claro na resposta aceita é que você não precisa criar um novo par de chaves. Você pode pegar sua chave existente e convertê-las com esse comando. Ele substitui o arquivo, por isso acho uma boa ideia fazer um backup antes, apenas por precaução.
martintama 22/02
Obrigado por adicionar instruções sobre como converter uma chave privada existente para o formato RSA. Acabei de salvar meu bacon!
Craig Blaszczyk