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, ~/.ssh
se omiten mis claves y se me solicita la contraseña del servidor para establecer la conexión.
$ ssh-add -K
me 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_config
opción llamadaUseKeychain
que permite una resolución 'adecuada' del problema. Agregue lo siguiente a su~/.ssh/config
archivo:Desde la
ssh_config
man
página del 10.12.2:fuente
IdentityFile ~/.ssh/id_rsa
es 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 elssh
nivel. No estoy 100% seguro de que el.bash_profile
mod 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-add
con la-A
opció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_profile
archivo 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 -A
opció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 -A
solo 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 -l
entonces 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_rsa
clave / 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 -l
y 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
-A
versió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
UseKeychain
opción a las opciones de configuración SSH abiertas y también considerassh-add -A
una solución.A partir de macOS Sierra 10.12.2, Apple ha agregado una
UseKeychain
opció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 -A
a la.bash_profile
suya como se explica en este boleto de Open Radar o se agregaUseKeychain
como 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.UseKeychain
yAddKeysToAgent
agregue 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 -A
su 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/config
archivo:Cualquier clave que agregue al agente ssh utilizando el
ssh-add /path/to/your/private/key/id_rsa
comando se agregará automáticamente al llavero, y debe cargarse automáticamente al reiniciar.Estoy agregando esta respuesta porque:
IdentityFile ~/.ssh/id_rsa
lí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-agent
después de un reinicio.fuente
ssh-add -L
e informaráThe agent has no identities
. Nada estará allí hasta que te conectes. ElAddKeysToAgent
no 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 -A
comando en cada inicio.Simplemente agregue un
.plist
archivo 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
UseKeychain
opción. Lea más aquí o investigueman ssh_config
.Así que solo haz lo siguiente:
echo "UseKeychain yes" >> ~/.ssh/config
fuente
>>
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 -K
me 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
config
en mi~/.ssh
carpeta, donde he agregado las siguientes líneas:No estoy seguro de por qué, pero
Host
yHostName
ambos 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 -K
y 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 yes
yUseKeychain yes
en el.ssh/config
archivo no son reconocidos por versiones ssh que no sean de Apple y causarán un error. Lo mismo para la opción-A
u-K
para elssh
cliente.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-add
utilidad macOS en su.bash_profile
para 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/github
fuente
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