No se puede desbloquear la clave SSH protegida con contraseña en OS X Mavericks

18

Acabo de actualizar a OSX 10.9, y cuando intento establecer una conexión SSH con autenticación de clave pública, aparece un mensaje que me solicita la contraseña de mi clave SSH.

Inicialmente pensé que la actualización hizo que el llavero olvidara algunas contraseñas, así que volví a ingresar la mía. Aparentemente, esa no fue la causa, porque el aviso seguía reapareciendo.

Primero pensé que podría estar usando la contraseña incorrecta, pero mientras el siguiente 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

...¡No funciona! Si intento usar openssl:

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

mi clave privada está descifrada correctamente y se imprime toda la información.

¿Qué pasó con la actualización a Mavericks? ¿Cómo puedo recuperar mi clave privada en un estado utilizable?

GaretJax
fuente

Respuestas:

22

Aparentemente, la clave privada que estaba usando en mi máquina era vieja. Mi clave no contenía la información de cifrado agregada al archivo de clave privada si genero una nueva:

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

Para resolver el problema, descifré la clave con openssl:

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

... y luego lo volvió a cifrar:

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

Y por si acaso, regenere la clave pública también:

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

Yo tuve el mismo problema. Lo resolví moviendo .ssh / Authorized_keys2 a .ssh / Authorized_keys.

El archivo / etc / sshd_config contiene explícitamente estas líneas:

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

Este es un cambio de la versión anterior de Macosx?

real
fuente
1
Este problema también es diferente. En mi caso, no pude descifrar mi clave privada.
GaretJax
2

El mismo problema aquí, mis teclas muestran el mismo comportamiento.

Seguí el problema hasta esta publicación de blog. Modifiqué mis teclas ssh de la forma en que se describió en este artículo para aumentar la seguridad y funcionó en Mountain Lion. http://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html

Supongo que Apple cambió algo con openssh y la "nueva" versión no es capaz de leer el nuevo formato PKCS # 8.

Mi versión Mavericks OpenSSH: OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

No tengo otra Mac, así que no puedo compararla con la versión Mountain Lion.

tripplet
fuente
/usr/bin/ssh -Vimprime OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011en mi VM 10.8.0.
Lri
Interesante, si tiene tiempo, ¿puede verificar qué muestra "ssh-keygen -vvv -y -f id_rsa" si usa una clave pkcs # 8?
tripplet
Mi clave pkcs # 8, derivada a través del mismo enlace, muestra esto: gist.github.com/cbowns/7359383/raw/…
cbowns
2

El uso de brew openssl y openssh corrige el problema PCKS # 8 en 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

No estoy seguro si forzar el enlace openssl rompe algo en Mavricks. Hasta ahora, no he notado ningún problema.

simple10
fuente
0

Pude solucionar este problema simplemente haciendo lo siguiente:

cd ~/.ssh
mv known_hosts known_hosts.old

Ahora ve y conéctate. Cuando hace la pregunta estándar para agregar el tipo de huella digital, sí.

Glen Barnhardt
fuente
¡Pero no olvides comprobar la huella digital!
zigg
1
Este es un problema diferente de lo que estaba preguntando. El archivo de hosts conocidos no tiene nada que ver con el problema encontrado aquí (descifrado de la clave privada)
GaretJax
0

Pasó a tener este problema. Al tratar de especificar el cifrado, pude hacer que funcionara bien.

En Linux, cuando intentas generar pares de claves, usa esto:

ssh-keygen -t rsa -Z aes256

La clave pública ahora con el cifrado aes256 puede ser reconocida correctamente por ssh en OSX (aquí, la mía es 10.12.1).

cbakgly
fuente
0

Puede convertir una clave PuTTY en una clave OpenSSL OS X:

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

Escriba la frase de contraseña y ya está.

León
fuente