SSH Restituzione improvvisa Formato non valido


23

Qualche tempo fa ho installato un server su AWS e ho usato la chiave SSH generata. Ho salvato la chiave su Lastpass e l'ho recuperata da lì con successo, e l'ho fatta funzionare. Tuttavia, dopo averlo riprovato oggi, non riesco a farlo funzionare.

-rw------- 1 itsgreg users 1674 Jun 6 12:51 key_name

Ho provato ssh -i key_name, ssh-keygen -f key_namema non funziona nulla, ricevo sempre questo messaggio di errore:

Load key "key_name": invalid format

C'è un modo per risolvere questo problema?

Risposte:


13

Controlla il contenuto di key_name, se l'agente dice invalid format, allora c'è qualcosa che non va nella chiave - tipo ... sei sicuro che sia la chiave corretta? Anche se non è la chiave privata di cui hai bisogno, l'agente ssh non restituirà invalid formatse la chiave funziona, semplicemente non sarai in grado di connetterti. Potresti aver inserito la tua chiave pubblica lì, per qualche motivo. Controllalo!


5
Sicuramente controllato. Inizia con ----BEGIN RSA PRIVATE KEY-----e termina con -----END RSA PRIVATE KEY-----. Inoltre funzionava.
Gregor Menih,

2
Un'improbabile, ma ancora possibile, è che il file sia corrotto. Creane uno nuovo e popolare nuovamente i contenuti da lastpass.
13dimitar,

2
Wow, questo ha aiutato davvero! Dopo aver generato la nuova chiave, ho notato che la nuova chiave aveva 64 caratteri per riga mentre la mia vecchia chiave aveva 76. Ho riformattato la mia vecchia chiave per avere solo 64 caratteri per riga, quindi ha iniziato a funzionare! Mi mancava anche un trattino dalla prima riga.
Gregor Menih,

2
"Mi mancava anche un trattino dalla prima riga." Idem. Grazie @ItsGreg per questo. Mi manca così spesso il primo personaggio durante la selezione e la copia tra terminali!
Starfry,

15

Quello che ho fatto per risolvere questo problema è che uso per convertire il file PPK usando PuttyGen.

Prima carica il urkey.PPK, quindi dal menu di conversione, fai clic su Esporta nel formato di file Openssh. Creerà il file newkey.

adesso, ssh -i "newkey" user@127.0.0.1

Fatto. Spero che sia d'aiuto.


4

Stavo chiedendo a openssh di usare un determinato file di identità specificandolo nel file .ssh / config.

La configurazione di lavoro originale aveva

IdentityFile = <path to public key file> 

Questo ha smesso di funzionare senza alcuna modifica. A pensarci un po 'ho sostituito il "percorso al file della chiave pubblica" sopra con "percorso al file della chiave privata". Ha funzionato Il ragionamento è che sia i file delle chiavi pubbliche che quelli privati ​​hanno grandi numeri relativi al peudoprime secondo l'algoritmo RSA. Se si sostituisce il file della chiave privata con il file della chiave pubblica, questi numeri crittografici non verrebbero estratti correttamente dal blocco base64 salvato nei file delle chiavi. Sembra che alcune versioni di ssh possano capire l'estensione .pub e usarlo per identificare il file della chiave privata corretto - e altre versioni non lo fanno. Questo è un altro modo in cui questo errore può verificarsi. Spero che aiuti qualcuno.


Nel mio caso, avevo il configfile di installazione con path_to_public_keye tutto funzionava. Tuttavia, quando il mac ha fatto un riavvio forzato e pochi giorni dopo ho provato a fare un git push, ho iniziato a ricevere l'errore sopra indicato. Ma quando l'ho cambiato ora le path_to_private_keycose stanno funzionando ... Hmmm. Non so perché ...
Lukik,

3

Ho avuto lo stesso problema, e risulta che avevo dei separatori di riga in stile Windows (CRLF) nel file per qualche motivo.

Inoltre, il file deve terminare con un singolo LF.

Riparare quelle cose rese di nuovo dandy.


È scioccante che l'ultimo LF sia così necessario, ma in realtà è stato in parte il problema, con l'altra parte è che ho creato il file in Windows e così facendo le interruzioni di riga CRLF. Per riferimento di altri, dos2unixè il comando per convertire le interruzioni di riga CRLF (stile Windows) in LF (stile Linux).
Hashim,

1

Dovresti convertire la tua chiave .ppk in chiave OpenSSH

Ecco come lo fai :

  1. Scarica PuttyGen e genera la tua coppia di chiavi (se non hai la coppia di chiavi pronta). Salva la chiave privata nella tua cartella (.ppk)
  2. Se hai già la chiave privata, carica il file della chiave privata (.ppk) premendo il pulsante "Carica". Altrimenti, saltare questo passaggio
  3. Nel menu "Conversioni", seleziona Esporta chiave OpenSSH, quindi salvala nella tua cartella
  4. Ora sei pronto per usare la chiave per accedere al tuo server senza digitare la password (suppongo che tu abbia già messo la chiave pubblica in /root/.ssh/authorized_keys, chmod 600 /root/.ssh/authorized_keys e il demone SSH riavviato)

1

Mi sono appena imbattuto in questo oggi quando stavo scrivendo alcuni programmi di utilità tagging git per la mia pipeline CI.

Ecco la differenza tra i miei due tasti:

$ diff ~/.ssh/gitlab ~/.ssh/git_ssh_key
27c27
< -----END OPENSSH PRIVATE KEY-----
---
> -----END OPENSSH PRIVATE KEY-----
\ No newline at end of file

Ho modificato il mio codice in questo modo:

     with open(ssh_key_file, 'w') as skf:
-        skf.write(ssh_key)
+        skf.write(ssh_key + '\n')

E ora la mia chiave ssh funziona.

TL; DR - Immagino che devi avere una nuova riga alla fine della tua chiave privata.


1

Nel mio caso, ho scoperto che avevo delle righe tra le "intestazioni" di inizio / fine e i dati chiave:

-----BEGIN RSA PRIVATE KEY-----

- Key data here -

-----END RSA PRIVATE KEY-----

Rimuovendo le nuove linee extra, così è diventato

-----BEGIN RSA PRIVATE KEY-----
- Key data here -
-----END RSA PRIVATE KEY-----

risolto il mio problema


0

Usa la tua chiave privata invece della chiave pubblica.


stessa soluzione della mia risposta - dove viene aggiunta anche una spiegazione
vpathak,

0

Ho avuto questo problema perché avevo una chiave in ~ / .ssh che in realtà era un formato non valido e avevo molte chiavi, il che significava che SSH le stava provando tutte, anche se ho specificato il mio file di identità nel comando. Capita semplicemente di fallire perché può solo provare 5 chiavi penso, e poi mi ha lasciato con quell'errore, che era legittimo, solo per il file di identità sbagliato. La soluzione era usare solo IdentitiesOnly yesnel mio ~ / .ssh / config.


0

Ho avuto questo errore perché all'inizio del file chiave c'era una riga vuota. Facile da perdere se lo stai catcercando.


0

Questo è anche l'errore che ssh (almeno alcune versioni) genera se hai una passphrase sulla tua chiave privata e inserisci la passphrase errata quando tenti di connetterti.

(In particolare, questo mi è successo con: OpenSSH_7.6p1, LibreSSL 2.6.2, che è SSH integrato per Mac OS X 10.13.6.)

Quindi ricontrolla che stai usando la passphrase corretta e che BLOC MAIUSC è disattivato.


-2

Assicurati di rinominare la chiave PRIVATA e rimuovere l'estensione del file che è il problema.

I passi che ho preso

Crea la tua chiave pubblica:

Assicurati di trovarti nella stessa directory in cui hai la chiave privata

Come creare la chiave pubblica:

ssh-keygen -y -f Private-Key.pem > Public-key.pub

assicurarsi che la chiave PUBLIC abbia l'estensione .pub

dopodiché fornire le autorizzazioni appropriate per motivi di sicurezza:

chmod 600 Private-Key.pem
chmod 400 Public-key.pub

POI la parte più importante e il motivo per cui hai ricevuto l'errore "formato non valido"

Assicurati di rinominare la chiave PRIVATA e rimuovere l'estensione del file:

Rimuovi il .pem dalla tua chiave privata.

mv Private-Key.pem Private-Key

o se su un computer Windows rinominare la chiave privata, lo stesso nome rimuove semplicemente la .pem

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.