A chave privada não parece estar no formato ssh.com - seus cabeçalhos são mentirosos.
As primeiras letras, MII…
, decodificam para bytes 30 82
, que é o início de um formato DER ASN.1 "sequence" - e o SSH.com não usa ASN.1 em seu formato de chave, < strong> mas o OpenSSL / OpenSSH faz, para chaves RSA não criptografadas.
(No entanto, se a chave tiver uma frase secreta, ela não será reconhecida dessa maneira. Veja também a nota no final.)
Em comparação, as chaves SSH.com provavelmente começarão com P2/56…
, ou bytes 3f 6f f9 eb …
. Esse tipo de coisa é o que as palavras "números mágicos" significam: muitos formatos são reconhecíveis por bytes específicos no início - às vezes definidos na especificação de formato, às vezes apenas um efeito colateral das estruturas de dados.
Portanto, se você ignorar os cabeçalhos de texto e tentar decodificar o principal blob dos dados, você encontrará uma estrutura ASN.1 exatamente como o OpenSSL usa para suas antigas chaves privadas no formato "bare RSA". Este é o mesmo formato que o OpenSSH usa para a maioria dos tipos de chaves privadas.
# cat key.txt | sed "/^---- /d; /^Comment:/d" | base64 -d > key.raw
# dumpasn1 key.raw
0 1212: SEQUENCE {
4 1: INTEGER 0
7 13: SEQUENCE {
9 9: OBJECT IDENTIFIER rsaEncryption (1 2 840 113549 1 1 1)
20 0: NULL
: }
22 1190: OCTET STRING, encapsulates {
26 1186: SEQUENCE {
30 1: INTEGER 0
33 257: INTEGER
: 00 DE EC 64 74 20 D3 E8 2B 07 9D C2 AF 17 8D 80
: 91 3B FD 99 C2 5F 6C B1 18 F5 BE A8 85 E0 1B 54
: 74 FF 43 83 3E FD 81 92 28 68 E1 C6 2B 1B 53 8F
: 47 1E B0 19 1D 72 BB DB 53 9A C6 6E A8 9D 39 F9
[etc.]
294 3: INTEGER 65537
[etc.]
# openssl rsa -in key.raw -inform DER -noout -text
Private-Key: (2048 bit)
modulus:
00:de:ec:64:74:20:d3:e8:2b:07:9d:c2:af:17:8d:
80:91:3b:fd:99:c2:5f:6c:b1:18:f5:be:a8:85:e0:
[etc.]
publicExponent: 65537 (0x10001)
privateExponent:
22:4d:2d:12:da:67:48:f2:f0:0f:d4:20:55:87:32:
38:86:ca:d9:b1:39:36:34:14:f3:61:54:34:8f:5c:
[etc.]
[etc.]
Como você pode ver, o OpenSSL o reconhece como seu próprio formato, contendo parâmetros RSA não criptografados.
Você pode "recuperar" essa chave:
-
removendo as duas linhas ----
e a linha Comment:
-
adicionando -----BEGIN RSA PRIVATE KEY-----
no topo
-
adicionando -----END RSA PRIVATE KEY-----
na parte inferior
-
dizendo ao PuTTYgen para importá-lo como uma chave privada OpenSSH
No entanto, com as chaves criptografadas , os cabeçalhos que o OpenSSL espera são um pouco diferentes - em particular, o cabeçalho DEK-Info:
contém o algoritmo de criptografia e o sal (ou é o IV?) que foi usado para criptografar os dados. Sem isso, você não pode descriptografar a chave, mesmo que você saiba a frase secreta.
Assim, os passos acima só funcionarão se a frase secreta da chave for removida previamente.