Pregunta macOS sigue pidiendo mi frase de contraseña ssh desde que actualicé a Sierra


Solía ​​recordar la frase de contraseña, pero ahora me la pregunta cada vez.

He leído que necesito regenerar la clave pública con este comando, lo que hice:

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

pero no solucionó nada.

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


500


origen


Estoy experimentando un comportamiento relacionado: antes, el cuadro de diálogo de llaveros aparecía para solicitar la contraseña, ahora solo obtengo el mensaje de la consola SSH normal. Es probable que el registro de algún programa auxiliar ya no esté. - Daniel B
Han pasado años desde que generé mi id_rsa y nunca he usado una frase de contraseña y uso esto para enviar ssh a muchos servidores. ¿De verdad tengo una frase de contraseña, o es solo que Sierra cree que debería? Tenga en cuenta que $ cat ~ / .ssh / id_rsa | head -2 ----- BEGIN RSA PRIVATE KEY ----- Tipo de Proc: 4, CIFRADO - Joe Murray
duplicado de apple.stackexchange.com/q/254468/62697 - Cœur
@erwan, pareces estar activo por aquí. ¿La respuesta a continuación resuelve tu problema? - tedder42
¿Alguna de las respuestas resuelve tu problema? Si es así, debes considerar aceptarlo. - Shafik Yaghmour


Respuestas:


En la última versión de macOS (10.12.2), es fácil de arreglar. Solo edita tu ~/.ssh/config y habilitar el UseKeychain opción:

Host *
    UseKeychain yes

No hay necesidad de cambiar nada más. Ahora todo funciona como solía funcionar antes de las últimas actualizaciones. No necesita agregar claves para ssh-agent.


Editar: Es posible que aún necesite ingresar su frase de contraseña una vez. Si no lo sabes, sigue estas instrucciones para revelarlo


983



Esto funcionó absolutamente para mí. Todo a continuación parece más complicado que esta solución. - Br.Bill
Nota la Host * bloque (casi) siempre debe colocarse en la parte inferior de su ~/.ssh/config archivo. Cuando ssh está buscando la configuración que utiliza el primero valor que encuentra. Por lo tanto, poniendo el comodín al final, actúa como un conjunto de valores predeterminados; puede anular la configuración de hosts específicos al especificarlos antes en el archivo. - Molomby
Esto funcionó para mí también, pero tuve que ingresar la frase de contraseña correctamente una vez. Ahi esta otra respuesta que describe cómo puede ver la contraseña si no la recuerda. - FGreg
Si el archivo de configuración no existe, crear uno y agregar esto también funcionará. - wynshaft
No necesitas el Host * título. Solo agrega la línea individual UseKeychain yes en la parte superior de tu .ssh/config si desea que esto se aplique a todos los hosts. - sj26


Yo tuve el mismo problema. MacOS Sierra Keychain sigue pidiendo la frase de contraseña. Su id_rsa se debe cifrar con una frase de contraseña para mayor seguridad. Luego intente agregarlo al llavero ssh-add -K ~/.ssh/id_rsa

Si su clave está en otra carpeta que ~/.ssh luego sustituye con la carpeta correcta.

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


164



Esto funciona pero parece no persistir cuando reinicio mi computadora. ¿Alguien más tiene el mismo problema? - joshua.paling
Sí, el mismo problema aquí. @ joshua.paling - kingkool68
@ joshua.paling, kingkool68 - Apple ha eliminado la capacidad de recordar sus claves SSH durante el reinicio para ajustarse al comportamiento de OpenSSH convencional. Consulte esta pregunta para conocer otras formas de lograr la misma funcionalidad: apple.stackexchange.com/questions/254468/... - Evan Pon
@EvanPon Pero eso no funcionará con claves encriptadas, ¿o sí? - Konrad Rudolph
@KonradRudolph funciona para mí. Vocación ssh-add con el -A la opción buscará en el llavero de MacOS cualquier contraseña para las identidades en cuestión. Creo que le preguntará si las contraseñas no están en el llavero. - Evan Pon


Esto solucionó mi problema similar:

/usr/bin/ssh-add -K

Esto almacena frases de contraseña en tu llavero.

Actualizar (gracias @EasyCo): Esto funciona pero no persiste entre reinicios. @ la solución de jukka-suomela en esta página hace trabajo en reinicios. Puedes encontrar esa respuesta aquí:

https://superuser.com/a/1158050/234685


62



Esto es lo único que funciona. - cryptic0
No necesité crear .ssh / .config al usar esta solución. - Shai
Esto funcionó para mí. No es necesario editar el archivo de host. Estoy en Sierra. - cchiera
Esto funcionó para mí en Mac OS Sierra. - Dayron Gallardo
Como se dijo anteriormente, esto funciona pero no persiste entre reinicios. El trabajo de la solución de @ jukka-suomela en todos los reinicios. - EasyCo


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

  • En Finder, busque la aplicación Acceso a Llaveros.
  • En Keychain Access, busque SSH.
  • Haga doble clic en la entrada de su clave SSH para abrir un nuevo cuadro de diálogo.
  • Diálogo de acceso al llavero En la esquina inferior izquierda, seleccione Mostrar contraseña.
  • Se le pedirá su contraseña administrativa. Títelo en el cuadro de diálogo "Acceso a Llaveros".
  • Su contraseña será revelada.

38



No funciona Terminal aún dice "contraseña incorrecta" - Jayden Lawson


Ninguna de las soluciones anteriores funcionó después de instalar Sierra sobre El Capitan en una nueva MacBook Pro. Sierra por diseño no guarda claves SSH en el llavero.

Dos soluciones funcionó para mí. Una es agregar el comando ssh-add -A &> /dev/null a ~ / .bash_profile. Cada vez que abras el terminal, este comando se ejecutará (el &> /dev/null parte envía la salida del comando al archivo / dev / null).

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


18



Esta parece ser la respuesta oficial de Apple también - ver openradar.appspot.com/27348363 - Nick Maynard
La mejor solución hasta ahora para mí. Estoy usando Mac OSX Sierra (10.12.2). - zyc


Una solución es agregar 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/ Ver también: https://apple.stackexchange.com/a/264974/3810


13



Hasta ahora, en ninguna de las respuestas, ¿alguien ha mencionado el Bad configuration option: usekeychain error que recibo con UseKeychain (sin embargo está en mayúscula). Pero yo estaba capaz de hacerlo funcionar eliminando solo esa línea y dejando AddKeysToAgent e IdentityFile (aún debe ingresar la frase de contraseña la primera vez). Esto es con macOS Sierra 10.12.6. - William Turrell
Esto funciona bien cuando estoy en la terminal y uso el comando ssh, pero otras aplicaciones, como WebStorm que usa su propio terminal, no toman esta configuración hasta que primero uso un comando ssh en la terminal normal. entonces funciona en todas partes, ¿alguna sugerencia? - santiago arizti
@WilliamTurrell Si esto todavía sucede, escriba which ssh para asegurarte de que estás usando /usr/bin/ssh y no una versión de Fink o MacPorts, que estaría bajo algo como /usr/local/bin/ssh o /opt/local/bin/ssh - Stefan Lasiewski


Esta mañana, tuve el mismo problema que tú después de actualizar a Sierra. En mi caso, el id_rsa el archivo fue encriptado y después de descifrarlo funcionaba como un amuleto.

  1. Verifica si tu id_rsa el archivo 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 podrías intentar descifrarlo
  3. Importante: haga una copia de seguridad de su original id_rsa ¡archivo! Usa el comando cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. Descifrar su clave privada con openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
  5. Retire la llave original (rm ~/.ssh/id_rsa) y reemplazarlo con el descifrado: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

Después de estos pasos, debería poder usar ssh nuevamente.


7



Si bien eso es una solución alternativa, no creo que sea realmente resuelve el problema del OP. - Daniel B
Esto funciona para mí @ Daniel B, ¿cuál es el problema al hacer esto? - Dag Høidahl
@ DagHøidahl La clave ya no estará encriptada. Se puede robar con los derechos de usuario habituales, por lo que el cifrado es una DEBERÍA DEBERÍA. - Daniel B
Esto elimina la contraseña de la clave, por lo que funciona en torno al problema del OP. Pero recomiendo contra esto. La contraseña es todo lo que impide que las personas usen tu llave cuando es robada. Como su clave probablemente dará acceso a múltiples sistemas, no desea debilitarla. - Martijn Heemels


También tuve este problema cuando intento implementar algún código usando Capistrano. Muy frustrante. Aquí hay dos métodos que conozco para tratar este problema.

Método 1: Agregar todos conocidos claves para el agente SSH.

Entonces una solución que encontré es correr ssh-add con el -A opción-que agrega todas las identidades conocidas al agente SSH usando cualquier frase de contraseña almacenada en su llavero, como esta:

ssh-add -A

Ahora esto funciona, pero no persistirá durante los reinicios. Entonces, si no quieres volver a preocuparte por esto, solo abre tu usuario ~/.bash_profile archivo como este:

nano ~/.bash_profile

Y agrega esta línea al final:

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

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

Método 2: Agregar solo las llaves SSH que están en el llavero al agente.

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

Para resumir, terminé bloqueado de un servidor remoto debido a demasiados intentos fallidos basados ​​en claves / identidades SSH ya que el acceso al servidor se basaba en una contraseña y las claves / identidades SSH son claves / identidades SSH. Entonces el agente SSH intentó todas de mis claves SSH, falló y ni siquiera pude acceder a la solicitud de contraseña.

El problema es ese ssh-add -A agregará arbitrariamente cada una de las claves / identidades SSH que tenga 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.

Primero, si tiene más claves / identidades SSH agregadas a su agente de las que necesita, como se muestra con ssh-add -l luego elimínelos del agente de la siguiente manera:

ssh-add -D

Una vez hecho esto, inicie el agente SSH como un proceso en segundo plano como ese:

eval "$(ssh-agent -s)"

Ahora, se pone raro y no estoy muy seguro de por qué. En algunos casos, puede agregar específicamente el ~/.ssh/id_rsa.pub clave / identidad para el agente como tal:

ssh-add ~/.ssh/id_rsa.pub

Escriba su frase de contraseña, golpee Regreso y deberías ser bueno para ir.

Pero en otros casos, simplemente ejecutar esto es suficiente para obtener la clave / identidad agregada:

ssh-add -K

Si eso fue todo, escribe ssh-add -l y debería ver una sola clave / identidad SSH listada.

¿Todo bien? Ahora abre tu .bash_profile:

nano ~/.bash_profile

Y agrega esta línea al final; comentar o eliminar el -Aversión si tienes eso en su lugar:

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

Eso permitirá que la clave / identidad SSH se vuelva a cargar al agente SSH en cada inicio / reinicio.

ACTUALIZACIÓN: Apple ha agregado un UseKeychain opción para abrir las opciones de configuración SSH y considera ssh-add -A una solución también.

A partir de macOS Sierra 10.12.2, Apple (supongo) ha agregado una UseKeychain opción de configuración para las configuraciones SSH. Verificación de la página del manual (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 Apple viendo la solución como agregar ssh-add -A para usted .bash_profile  como se explica en este ticket Open Radar o agregando UseKeychain como una de las opciones en un por usuario ~/.ssh/config.


3





Jukka Suomelaes responder es correcto, pero si estás usando openssh instalado desde homebrew, entonces también necesitas desinstalarlo con:

brew remove openssh

... para volver al valor por defecto del sistema openssh, porque el de homebrew no es compatible UseKeychain entrada de configuración ssh.


3



Si alguien lo quiere con homebrew, hazme ping aquí: github.com/rdp/homebrew-openssh-gssapi - rogerdpack


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

Agregando a la siguiente línea en la parte superior .ssh/config archivo en la máquina local y remota funcionó para mí.

PubkeyAcceptedKeyTypes=+ssh-dss 

1