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:
ssh-add -A
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:
nano ~/.bash_profile
Y agregue 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: 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 comunes id_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:
ssh-add -D
Una vez hecho esto, inicie el agente SSH como un proceso en segundo plano así:
eval "$(ssh-agent -s)"
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:
ssh-add ~/.ssh/id_rsa
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:
ssh-add -K
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
:
nano ~/.bash_profile
Y agregue esta línea al final; comente o elimine la -A
versión si la tiene:
ssh-add -K 2>/dev/null;
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 considera ssh-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ía 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 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 agrega UseKeychain
como una de las opciones en cada usuario ~/.ssh/config
.
$ ssh-add -K
me dassh-add: illegal option -- K