2016-09-22 09:21:53 +0000 2016-09-22 09:21:53 +0000
607
607

macOS sigue preguntando mi contraseña ssh desde que actualicé a Sierra

Antes recordaba la frase de paso, pero ahora me la pide cada vez.

He leído que tengo que regenerar la clave pública con este comando, cosa que he hecho:

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

pero no arregló nada.

¿Cómo puedo hacer que macOS recuerde mi frase de contraseña de nuevo?

Respuestas (12)

1168
1168
1168
2016-12-19 12:04:25 +0000

En la última versión de macOS (10.12.2), esto es fácil de arreglar. Sólo tienes que editar tu ~/.ssh/config y habilitar la opción UseKeychain:

Host *
    UseKeychain yes

No es necesario cambiar nada más. Ahora todo funciona como lo hacía antes de las últimas actualizaciones. No es necesario añadir claves a ssh-agent.

  • *

Editar: Es posible que todavía tenga que introducir su frase de contraseña una vez. Si no la conoce, siga estas instrucciones para revelarla.

193
193
193
2016-09-23 12:53:05 +0000

He tenido el mismo problema. El llavero de MacOS Sierra sigue pidiendo la frase de contraseña. Su id_rsa debe ser encriptado con una frase de contraseña para la seguridad. Entonces intenta añadirla al llavero ssh-add -K ~/.ssh/id_rsa

Si tu clave está en otra carpeta que no sea ~/.ssh entonces sustitúyela por la carpeta correcta.

Keychain ahora conoce su clave ssh y, con suerte, todo funciona ahora (el mío lo hizo)

75
75
75
2016-10-09 14:39:56 +0000

Esto arregló mi problema similar:

/usr/bin/ssh-add -K

Esto almacena las frases de paso en su llavero.

Actualización (gracias @EasyCo): Esto funciona pero no persiste entre reinicios. La solución de @jukka-suomela en esta página funciona entre reinicios. Puedes encontrar esa respuesta aquí: https://superuser.com/a/1158050/234685

41
41
41
2016-10-29 17:16:24 +0000

Sólo tuve que introducir la frase de contraseña correcta una vez y empezó a funcionar. El problema era que no recordaba mi frase de acceso SSH original, pero la recuperé siguiendo estos pasos de Github:

  • En Finder, busca la aplicación Keychain Access.
  • En Keychain Access, busca SSH.
  • Haga doble clic en la entrada de su clave SSH para abrir un nuevo cuadro de diálogo.
  • Diálogo de acceso al llaveroEn la esquina inferior izquierda, seleccione Mostrar contraseña.
  • Se le pedirá su contraseña administrativa. Introdúzcala en el cuadro de diálogo “Acceso al llavero”.
  • Su contraseña será revelada.
19
19
19
2016-09-27 14:40:37 +0000

Ninguna de las soluciones anteriores funcionó después de instalar Sierra sobre El Capitán en un nuevo MacBook Pro. Sierra por diseño no guarda las claves SSH en el llavero.

Dos soluciones me han funcionado. Una es añadir el comando ssh-add -A &> /dev/null a ~/.bash_profile. Cada vez que abra la terminal, este comando se ejecutará (la parte &> /dev/null envía la salida del comando al archivo /dev/null).

Una solución más complicada pero ligeramente más hábil es crear un plist con el comando que se ejecuta cada vez que se arranca el sistema operativo como se sugiere en Guardar las claves SSH en el llavero de macOS Sierra . Esto implica el uso de Xcode para crear el archivo.

18
18
18
2016-12-16 06:14:08 +0000

Una solución es añadir lo siguiente a su archivo ~/.ssh/config:

Host *
   AddKeysToAgent yes
   IdentityFile ~/.ssh/id_rsa
   UseKeychain yes

Tomado de: https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ También vea: https://apple.stackexchange.com/a/264974/3810

8
8
8
2016-09-22 10:58:21 +0000

Esta mañana he tenido el mismo problema que tú tras actualizar a Sierra. En mi caso, el archivo id_rsa estaba encriptado y tras desencriptarlo funcionaba a las mil maravillas.

  1. Verifica si tu archivo id_rsa está encriptado con el siguiente comando: cat ~/.ssh/id_rsa | head -2
  2. Si la segunda línea dice Proc-Type: 4,ENCRYPTED, está encriptado y puedes intentar desencriptarlo
  3. Importante: ¡haz una copia de seguridad de tu archivo original id_rsa! Utiliza el comando cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. Desencripte su clave privada con openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
  5. Elimine la clave original (rm ~/.ssh/id_rsa) y sustitúyala por la descifrada: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

Después de estos pasos, deberías poder usar ssh de nuevo.

8
8
8
2017-02-15 02:15:22 +0000

Probé varias respuestas aquí, pero seguía teniendo problemas con el paso de claves remotas (como cuando se usa capistrano). Para solucionarlo, leí la nota técnica de apple e hice este mi archivo de configuración. Ya no me pide la contraseña. https://developer.apple.com/library/content/technotes/tn2449/_index.html

Host *  
IdentityFile ~/.ssh/id_rsa  
IgnoreUnknown UseKeychain  
UseKeychain yes  
AddKeysToAgent yes
5
5
5
2017-01-02 00:05:33 +0000

Yo también tuve este problema al intentar desplegar un código usando Capistrano . Muy frustrante. Aquí hay dos métodos que conozco para lidiar con este problema.

Método 1: Añadir todas las claves conocidas al agente SSH.

Una de las soluciones que he encontrado es ejecutar ssh-add con la opción -A-que añade todas las identidades conocidas al agente SSH usando cualquier frase de contraseña almacenada en su llavero-como esto:

ssh-add -A

Ahora esto funciona pero no persistirá a través de los reinicios. Así que si quieres no volver a preocuparte por esto, simplemente abre el archivo ~/.bash_profile de tu usuario así:

nano ~/.bash_profile

Y añade esta línea al final:

ssh-add -A 2>/dev/null;

¡Ahora cuando abra una nueva ventana de Terminal, todo debería estar bien!

Método 2: Añadir sólo las claves SSH que estén en el llavero al agente.

Mientras que la opción ssh-add -A debería funcionar para la mayoría de los casos básicos, me encontré con un problema recientemente en el que tenía 6-7 cajas de Vagrant (que utiliza claves/identidades SSH para el acceso) configuradas en una máquina además de la más común id_rsa.pub en su lugar.

Resumiendo, acabé bloqueado en un servidor remoto debido a demasiados intentos fallidos basados en claves/identidades SSH ya que el acceso al servidor estaba basado en una contraseña y las claves/identidades SSH son claves/identidades SSH. Así que el agente SSH intentó todas mis claves SSH, falló y no pude ni siquiera llegar al prompt de la contraseña.

El problema es que ssh-add -A añadirá arbitrariamente cada una de las claves/identidades SSH que tengas al agente incluso si no es necesario hacerlo; como en el caso de las cajas Vagrant.

Mi solución después de muchas pruebas fue la siguiente.

En primer lugar, si tiene más claves/identidades SSH añadidas a su agente de las que necesita -como se muestra con ssh-add -l entonces purgue todas ellas del agente de esta manera:

ssh-add -D

Una vez hecho esto, inicie el agente SSH como un proceso en segundo plano de la siguiente manera

eval "$(ssh-agent -s)"

Ahora, la cosa se pone rara y no estoy muy seguro de por qué. En algunos casos puedes añadir específicamente la clave/identidad ~/.ssh/id_rsa.pub al agente así:

ssh-add ~/.ssh/id_rsa.pub

Escriba su frase de contraseña, pulse Return y debería estar listo.

Pero en otros casos basta con ejecutar esto para que se añada la clave/identidad:

ssh-add -K

Si todo ha funcionado, teclea ssh-add -l y deberías ver una única clave/identidad SSH en la lista.

¿Todo bien? Ahora abre tu .bash_profile:

nano ~/.bash_profile

Y añada esta línea al final; comente o elimine la versión -A si la tiene:

ssh-add -K 2>/dev/null;

Eso permitirá que la clave/identidad SSH se recargue en el agente SSH en cada arranque/reinicio.

ACTUALIZACIÓN: Apple ha añadido ahora una opción UseKeychain a las opciones de configuración de SSH abierto y considera que ssh-add -A también es una solución.

A partir de macOS Sierra 10.12.2, Apple (supongo) ha añadido una opción de configuración UseKeychain para las configuraciones SSH. Comprobando la página man (a través de man ssh_config) muestra la siguiente información:

UseKeychain
        On macOS, specifies whether the system should search for
        passphrases in the user's keychain when attempting to use a par-
        ticular key. When the passphrase is provided by the user, this
        option also specifies whether the passphrase should be stored
        into the keychain once it has been verified to be correct. The
        argument must be ``yes'' or ``no''. The default is ``no''.

Lo que se reduce a que Apple ve la solución como añadir ssh-add -A a su .bash_profile como se explica en este ticket de Open Radar o añadir UseKeychain como una de las opciones en un ~/.ssh/config por usuario.

4
4
4
2017-01-28 08:58:48 +0000

La respuesta de Jukka Suomela es correcta, pero si estás usando openssh instalado desde homebrew, entonces también necesitas desinstalarlo con:

brew remove openssh

…para volver al openssh por defecto del sistema, porque el de homebrew no soporta la entrada de configuración de ssh de UseKeychain.

2
2
2
2016-12-10 21:04:01 +0000

Necesitas un archivo .plist añadido a ~/Library/LaunchAgents/ para ejecutar ssh-add -A en cada inicio de macOS.

Hay un único comando que hace esto (de SSH-keys-in-macOS-Sierra-keychain ) que es:

curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist
2
2
2
2017-01-01 23:56:10 +0000

He probado todas las soluciones sugeridas aquí, pero no tengo configurado el llavero en mi Mac.

Añadiendo a la siguiente línea en la parte superior del archivo .ssh/config tanto en la máquina local como en la remota me ha funcionado.

PubkeyAcceptedKeyTypes=+ssh-dss