Impossibile sbloccare la chiave SSH protetta da password in OS X Mavericks


18

Ho appena effettuato l'aggiornamento a OSX 10.9 e quando provo a stabilire una connessione SSH con l'autenticazione con chiave pubblica, viene visualizzato un messaggio che richiede la password della mia chiave SSH.

Inizialmente pensavo che l'upgrade causasse al portachiavi di dimenticare alcune password, quindi ho reinserito il mio. Apparentemente, quella non era la causa, perché il prompt continuava a riapparire.

Prima ho pensato che potrei usare la password sbagliata, ma mentre il seguente comando:

$ ssh-keygen -vvv -y -f id_rsa >| id_rsa.pub
debug3: Incorrect RSA1 identifier
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase:
debug3: Incorrect RSA1 identifier
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
load failed

...non funziona! Se provo ad usare openssl:

$ openssl rsa -in id_rsa -text
Enter pass phrase for id_rsa:
Private-Key: (2048 bit)
modulus:
    00:...

la mia chiave privata è stata decifrata correttamente e tutte le informazioni sono stampate.

Che cosa è successo con l'aggiornamento a Mavericks? Come posso riportare la mia chiave privata in uno stato utilizzabile?

Risposte:


22

Apparentemente, la chiave privata che stavo usando sulla mia macchina era una vecchia. La mia chiave non conteneva le informazioni di crittografia aggiunte al file della chiave privata se ne genera una nuova:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-...

Per risolvere il problema, ho decrittografato la chiave con openssl:

$ cd ~/.ssh
$ cp id_rsa id_rsa.bck
$ openssl rsa -in id_rsa -out id_rsa

... e poi nuovamente crittografato:

$ openssl rsa -in id_rsa -aes256 -out id_rsa
$ chmod 0600 id_rsa

E per ogni evenienza, rigenerare anche la chiave pubblica:

$ ssh-keygen -y -f id_rsa > id_rsa.pub

3

Ho avuto lo stesso problema. L'ho risolto spostando .ssh / authorized_keys2 in .ssh / authorized_keys.

Il file / etc / sshd_config contiene esplicitamente queste righe:

\# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
\# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile  .ssh/authorized_keys

Questa è una modifica rispetto alla versione precedente di macosx?


1
Anche questo problema è diverso. Nel mio caso non sono stato in grado di decrittografare la mia chiave privata.
GaretJax,

2

Stesso problema qui, le mie chiavi mostrano lo stesso comportamento.

Ho rintracciato il problema in questo post del blog. Ho modificato le mie chiavi ssh nel modo in cui è stato descritto in questo articolo per aumentare la sicurezza e ha funzionato su Mountain Lion. http://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html

Presumo che Apple abbia cambiato qualcosa con openssh e la "nuova" versione non è in grado di leggere il nuovo formato PKCS # 8.

My Mavericks OpenSSH Version: OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

Non ho altri Mac, quindi non posso confrontarlo con la versione Mountain Lion.


/usr/bin/ssh -Vstampa OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011sulla mia VM 10.8.0.
Lri,

Interessando, se hai tempo puoi controllare cosa mostra "ssh-keygen -vvv -y -f id_rsa" se usi un tasto pkcs # 8?
tripplet

La mia chiave pkcs # 8, derivata tramite lo stesso link, mostra questo: gist.github.com/cbowns/7359383/raw/…
cbowns

2

L'uso di brew openssl e openssh risolve il problema PCKS # 8 su Mavericks.

brew update
brew install openssl
brew link openssl --force
brew install openssh

# confirm correct bins are being used
# both should be located in /usr/local/bin
which openssl
which openssh

# add key back to keychain
ssh-add ~/.ssh/id_rsa

Non sono sicuro che il collegamento forzato openssl rompa qualcosa su Mavricks. Finora non ho notato alcun problema.


0

Sono stato in grado di risolvere questo problema semplicemente facendo quanto segue:

cd ~/.ssh
mv known_hosts known_hosts.old

Ora vai e connettiti. Quando si pone la domanda standard per aggiungere il tipo di impronta digitale sì.


Ma non dimenticare di controllare l'impronta digitale!
zigg,

1
Questo è un problema diverso da quello che stavo chiedendo. Il file hosts noto non ha nulla a che fare con il problema riscontrato qui (decodifica della chiave privata)
GaretJax,

0

È successo per avere questo problema. Provando a specificare il codice, sono stato in grado di farlo funzionare bene.

Su Linux, quando si tenta di generare coppie di chiavi, utilizzare questo:

ssh-keygen -t rsa -Z aes256

La chiave pubblica ora con cifratura aes256 può essere correttamente riconosciuta da ssh su OSX (qui, la mia è 10.12.1).


0

È possibile convertire una chiave PuTTY in una chiave OpenSSL OS X:

puttygen putty.ppk -O private-openssh -o osx.key

Digita la passphrase e il gioco è fatto.

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.