Guarda las identidades agregadas por ssh-add para que persistan

8

Recientemente instalé openssh para que pudiera usarlo con git.

En el proceso de configurarlo (según Este artículo ) Corrí los comandos:

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/<name of key>

Algún tiempo después, después de cerrar sesión y volver a intentarlo, intenté usar git push Tengo un error La solución a este error fue ejecutar esos mismos comandos nuevamente.

Por favor dime como puedo

  • Mantener el ssh-agent corriendo para que no tenga que empezar uno nuevo
  • Recuerda las claves que agregué para no tener que agregarlas cada vez.

Solo para aclarar, uso zsh para que ciertas funciones de bash no funcionen en mi .zshrc.

timotree
fuente
Debes empezar por entender lo que es ssh-agent para y cómo funciona antes de tratar de adaptarlo a su estuche torcido.
Jakuje
¿Qué error tienes?
Jakuje
@Jakuje El error fue sobre una clave de acceso faltante y se le preguntó "¿Ha iniciado ssh-agent?".
timotree

Respuestas:

11

Que es ssh-agent ¿Para y como funciona?

los ssh-agent mantiene sus claves desencriptadas de forma segura en la memoria y en su sesión. No existe una forma razonable y segura de conservar las claves descifradas entre los reinicios y los inicios de sesión.

OK, ¿cómo puedo automatizarlo?

Automatizar ssh-agent puesta en marcha

Añadir

[ -z "$SSH_AUTH_SOCK" ] && eval "$(ssh-agent -s)"

para usted ~/.bashrc u otro script de inicio ( ~/.zshrc ).

Automatizar añadiendo las claves.

Las claves se pueden agregar automáticamente en el primer uso, cuando agrega

AddKeysToAgent yes

para usted ~/.ssh/config.

Para más información sobre ~/.ssh/config ver man ssh_config.

Jakuje
fuente
Así que estás diciendo que si habilito AddKeysToAgent, cada vez que escribo eval "$(ssh-agent -s)" se agregará mi clave?
timotree
Si el agente se está ejecutando y su ssh soporta esta opción, entonces sí.
Jakuje
¿Podría aclarar cómo automatizaría el inicio de la ssh-agent ¿entonces?
timotree
Básicamente, como se explica en la otra respuesta. [ -z "$SSH_AUTH_SOCK" ] && eval $(ssh-agent)
Jakuje
¿Eso funciona con zsh?
timotree
3

Añadir esto a ~/.bashrc

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
 ssh-add
fi
Savitoj Singh
fuente
1
Esta fue una buena respuesta, pero no explica lo que hace el comando.
timotree