Tengo que ejecutar este comando desde la actualización a macOS:
ssh-add -K
Corrige el problema después del reinicio, pero tengo que ejecutar este comando cada vez que inicio sesión en mi computadora.
Si no ejecuto el comando anterior, ~/.sshse omiten mis claves y se me solicita la contraseña del servidor para establecer la conexión.

$ ssh-add -Kme dassh-add: illegal option -- K-K. Vea la respuesta de @JakeGould para su resolución.Respuestas:
A partir de macOS Sierra 10.12.2, Apple agregó una
ssh_configopción llamadaUseKeychainque permite una resolución 'adecuada' del problema. Agregue lo siguiente a su~/.ssh/configarchivo:Desde la
ssh_configmanpágina del 10.12.2:fuente
IdentityFile ~/.ssh/id_rsaes redundante y no es necesario (al mirar las opciones predeterminadas). Nunca he configurado esa opción en mi archivo de configuración ssh.~/.ssh/config~es preferible, ya que resuelve el problema en elsshnivel. No estoy 100% seguro de que el.bash_profilemod funcione para clientes GUI que usan ssh sin usar un shell.También tuve este problema al intentar implementar algún código usando Capistrano . Muy frustrante. Aquí hay dos métodos que conozco para tratar este problema.
Método 1: agregue todas las claves conocidas al agente SSH.
Entonces, una solución que encontré es ejecutar
ssh-addcon la-Aopción, que agrega todas las identidades conocidas al agente SSH usando cualquier frase de contraseña almacenada en su llavero, como esta:Ahora esto funciona pero no persistirá entre reinicios. Entonces, si no desea preocuparse por esto nuevamente, simplemente abra el
~/.bash_profilearchivo de su usuario de esta manera:Y agregue esta línea al final:
Ahora, cuando abras una nueva ventana de Terminal, ¡todo debería estar bien!
Método 2: agregue solo las claves SSH que están en el llavero al agente.
Entonces, aunque la
ssh-add -Aopción debería funcionar para la mayoría de los casos básicos, recientemente me encontré con un problema en el que tenía 6-7 cajas Vagabundos (que usan claves / identidades SSH para el acceso) configuradas en una máquina además de las más comunesid_rsa.pub.En pocas palabras, terminé siendo bloqueado de un servidor remoto debido a demasiados intentos fallidos basados en claves / identidades SSH ya que el acceso al servidor se basó en una contraseña y las claves / identidades SSH son claves / identidades SSH. Entonces, el agente SSH probó todas mis claves SSH, falló y ni siquiera pude acceder a la solicitud de contraseña.
El problema es que
ssh-add -Asolo agregará arbitrariamente cada clave / identidad 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 -lentonces purgue todas del agente de la siguiente manera:Una vez hecho esto, inicie el agente SSH como un proceso en segundo plano así:
Ahora, se pone raro y no estoy muy seguro de por qué. En algunos casos, puede agregar específicamente la
~/.ssh/id_rsaclave / identidad al agente de la siguiente manera:Escriba su frase de contraseña, presione Returny debería estar listo para comenzar.
Pero en otros casos, simplemente ejecutar esto es suficiente para agregar la clave / identidad:
Si todo funcionó, escriba
ssh-add -ly debería ver una sola clave / identidad SSH en la lista.¿Todo bien? Ahora abre tu
.bash_profile:Y agregue esta línea al final; comente o elimine la
-Aversión si la tiene:Eso permitirá que la clave / identidad SSH se vuelva a cargar en el agente SSH en cada inicio / reinicio.
ACTUALIZACIÓN: Apple ahora ha agregado una
UseKeychainopción a las opciones de configuración SSH abiertas y también considerassh-add -Auna solución.A partir de macOS Sierra 10.12.2, Apple ha agregado una
UseKeychainopción de configuración para configuraciones SSH. La comprobación de la página de manual (víaman ssh_config) muestra la siguiente información:Lo que se reduce a que Apple vea que la solución se agrega
ssh-add -Aa la.bash_profilesuya como se explica en este boleto de Open Radar o se agregaUseKeychaincomo una de las opciones en cada usuario~/.ssh/config.fuente
ssh-add -K [path to key]e ingrese pw cuando se le solicite. Keychain almacenará la contraseña y ssh-add la obtendrá desde allí después de eso.UseKeychainyAddKeysToAgentagregue automáticamente sus claves desde su ssh_config. No se necesitan scripts de shell. Consulte la respuesta de @mluisbrown a continuación para obtener la información actualizada para 10.12.2ssh-add -Asu script rc si desea que sus claves estén siempre cargadas".¯\_(ツ)_/¯Como se explica aquí , este es el método recomendado desde macOS 10.12.2 :
Agregue las siguientes líneas a su
~/.ssh/configarchivo:Cualquier clave que agregue al agente ssh utilizando el
ssh-add /path/to/your/private/key/id_rsacomando se agregará automáticamente al llavero, y debe cargarse automáticamente al reiniciar.Estoy agregando esta respuesta porque:
IdentityFile ~/.ssh/id_rsalínea, pero esa opción no es necesaria para cargar automáticamente las claves (y en realidad vinculará esa clave en particular para la sección de host a la que la agregará, lo que no querrá si usa diferentes claves para diferentes hots).UseKeychain, pero eso no es suficiente para persistir las clavesssh-agentdespués de un reinicio.fuente
ssh-add -Le informaráThe agent has no identities. Nada estará allí hasta que te conectes. ElAddKeysToAgentno persiste las teclas entre reinicios de ninguna manera!He escrito una breve publicación sobre este tema que podría ayudarte.
Una solución es llamar al
ssh-add -Acomando en cada inicio.Simplemente agregue un
.plistarchivo con el siguiente contenido a la ruta~/Library/LaunchAgents/o cree uno con la aplicación Lingon :fuente
Desde macOS 10.12.2 puede usar la
UseKeychainopción. Lea más aquí o investigueman ssh_config.Así que solo haz lo siguiente:
echo "UseKeychain yes" >> ~/.ssh/configfuente
>>está en riesgo si ingresa el comando varias veces. Mejor hacer una edición manual del archivo, como se describe en mluisbrown answer o ChrisJF answer .Encontré que
ssh-add -Kme dio " opción ilegal - K ". Esto se debió a que ssh-add era una versión extraña proveniente de / usr / local / bin (¿instalada por brew?). Pude agregar la clave mediante el uso específico de ssh-add ubicado en / usr / bin:fuente
Tuve este problema antes y he encontrado una manera de evitarlo. Acabo de crear un archivo llamado
configen mi~/.sshcarpeta, donde he agregado las siguientes líneas:No estoy seguro de por qué, pero
HostyHostNameambos son importantes. En mi caso, si uno de ellos no estaba presente, entonces la solución no funcionó.Entonces, acabo de hacer un
ssh-add -Ky estaba funcionando incluso después del reinicio.fuente
Si está utilizando una versión diferente de ssh (por ejemplo, instalada a través de homebrew), las soluciones anteriores no funcionarán de inmediato. Por ejemplo,
AddKeysToAgent yesyUseKeychain yesen el.ssh/configarchivo no son reconocidos por versiones ssh que no sean de Apple y causarán un error. Lo mismo para la opción-Au-Kpara elsshcliente.Eso significa que la respuesta de @mluisbrown no funcionará en absoluto. Puede usar el método 1 de la respuesta de @JakeGould y usar explícitamente la
ssh-addutilidad macOS en su.bash_profilepara agregar todas las claves al llavero, es decir:Como se menciona en un comentario anterior , es posible que primero deba agregar una clave al llavero: por ejemplo
/usr/bin/ssh-add -K .ssh/githubfuente
Enmendar ~ / .ssh / config para agregar UseKeyChain para todos los hosts es suficiente para detener esta pesadilla recurrente;)
Si el archivo está vacío o no existe, simplemente cree y / o agregue la configuración anterior.
fuente
Actualicé a Mac OS X Sierra (10.12.6). Podría pasar a otros hosts pero no a github.com.
Esto es lo que tuve que insertar en ~ / .ssh / config:
Después de ese cambio, podría usar github como antes.
fuente