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

18

Je viens de passer à OSX 10.9, et lorsque j'essaie d'établir une connexion SSH avec l'authentification par clé publique, une invite apparaît me demandant mon mot de passe de clé SSH.

Au début, je pensais que la mise à niveau avait fait oublier au trousseau certains mots de passe, alors j'ai ré-entré le mien. Apparemment, ce n'était pas la cause, car l'invite réapparaissait.

J'ai d'abord pensé que j'utilisais peut-être le mauvais mot de passe, mais alors que 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 marche 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échiffrée et toutes les informations sont imprimées.

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

GaretJax
la source

Réponses:

22

Apparemment, la clé privée que j'utilisais sur ma machine était ancienne. Ma clé ne contient pas les informations de chiffrement ajoutées au fichier de 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échiffré la clé avec openssl:

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

... puis rechiffré:

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

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

$ ssh-keygen -y -f id_rsa > id_rsa.pub
GaretJax
la source
3

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

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

réel
la source
1
Ce problème est également différent. Dans mon cas, je n'ai pas pu décrypter ma clé privée.
GaretJax
2

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

J'ai suivi le problème dans 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 changé quelque chose avec openssh et que la "nouvelle" version n'est pas capable de lire le nouveau format PKCS # 8.

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

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

tripplet
la source
/usr/bin/ssh -Vimprime OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011sur ma VM 10.8.0.
Lri
Intéressant, si vous avez le temps, pouvez-vous vérifier ce que montre "ssh-keygen -vvv -y -f id_rsa" si vous utilisez une clé pkcs # 8?
tripplet
Ma clé pkcs # 8, dérivée via ce même lien, montre ceci: gist.github.com/cbowns/7359383/raw/…
cbowns
2

L'utilisation de brew openssl et openssh corrige 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 sais pas si la liaison forcée openssl casse quoi que ce soit sur Mavricks. Jusqu'à présent, je n'ai remarqué aucun problème.

simple10
la source
0

J'ai pu résoudre ce problème en procédant simplement comme suit:

cd ~/.ssh
mv known_hosts known_hosts.old

Maintenant, allez vous connecter. Quand il pose la question standard pour ajouter le type d'empreinte digitale oui.

Glen Barnhardt
la source
Mais n'oubliez pas de vérifier l'empreinte digitale!
zigg
1
C'est un problème différent de ce que je demandais. Le fichier hosts connu n'a rien à voir avec le problème rencontré ici (décryptage de la clé privée)
GaretJax
0

Arrivé pour obtenir ce problème. En essayant de spécifier le chiffre, j'ai pu le faire fonctionner correctement.

Sous Linux, lorsque vous essayez de générer des paires de clés, utilisez ceci:

ssh-keygen -t rsa -Z aes256

La clé publique maintenant avec le chiffre aes256 peut être correctement reconnue par ssh sur OSX (ici, la mienne est 10.12.1).

cbakgly
la source
0

Vous pouvez convertir une clé PuTTY en une clé OpenSSL OS X:

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

Tapez la phrase de passe et vous avez terminé.

Leo
la source