19 votes

Impossible de déverrouiller une clé SSH protégée par un mot de passe dans OS X Mavericks

Je viens d'effectuer une mise à niveau vers OSX 10.9, et lorsque j'essaie d'établir une connexion SSH avec une authentification par clé publique, une invite apparaît pour me demander le mot de passe de ma clé SSH.

J'ai d'abord pensé que la mise à jour avait fait oublier certains mots de passe au trousseau, j'ai donc réintroduit le mien. Apparemment, ce n'était pas la cause, car l'invite n'a cessé de réapparaître.

J'ai d'abord pensé que j'utilisais peut-être un mauvais mot de passe, mais j'ai trouvé la commande suivante :

$ 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

...ne fonctionne pas ! Si j'essaie d'utiliser openssl :

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

ma clé privée est correctement décryptée et toutes les informations sont imprimées.

Que s'est-il passé avec la mise à niveau vers Mavericks ? Comment puis-je récupérer ma clé privée dans un état utilisable ?

22voto

J.J. Points 3543

Apparemment, la clé privée que j'utilisais sur ma machine était ancienne. Ma clé ne contenait pas les informations de cryptage ajoutées au fichier de la clé privée si j'en génère une nouvelle :

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

Pour résoudre le problème, j'ai décrypté la clé avec openssl :

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

...et l'a ré-encrypté :

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

Et juste au cas où, régénérez aussi la clé publique :

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

3voto

real Points 31

J'ai eu le même problème. Je l'ai résolu en déplaçant .ssh/authorized_keys2 vers .ssh/authorized_keys.

Le fichier /etc/sshd_config contient explicitement ces lignes :

\# 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

C'est un changement par rapport à la version précédente de macosx ?

3voto

Patrick McDonald Points 20645

L'utilisation de brew openssl et openssh résout le problème PCKS#8 sur 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

Je ne suis pas sûr que le fait de lier openssl de force casse quelque chose sur Mavricks. Jusqu'à présent, je n'ai pas remarqué de problèmes.

2voto

Hemanshu Bhojak Points 3626

Même problème ici, mes clés présentent le même comportement.

J'ai remonté le problème jusqu'à cet article de blog. J'ai modifié mes clés ssh de la manière décrite dans cet article pour augmenter la sécurité et cela a fonctionné sous Mountain Lion. http://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html

Je suppose qu'Apple a modifié quelque chose avec openssh et que la "nouvelle" version n'est pas capable de lire le nouveau format PKCS#8.

Ma version de Mavericks OpenSSH : OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

Je n'ai pas d'autre Mac, je ne peux donc pas le comparer à la version Mountain Lion.

0voto

Glen Barnhardt Points 1

J'ai pu résoudre ce problème en faisant simplement ce qui suit :

cd ~/.ssh
mv known_hosts known_hosts.old

Maintenant, allez-y et connectez-vous. Quand il demande la question standard pour ajouter l'empreinte digitale tapez oui.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X