claves ssh ssh-agent bash y ssh-add

28

Soy nuevo en las claves ssh. ¿Alguien puede explicar cómo funciona el ssh-agent bashy ssh-add?

Necesito entender sus aspectos internos en el futuro.

maneeshshetty
fuente
¿Has probado el mejor éxito de Google para alguno de estos términos?
Daniel Beck
Sí, lo hice. No obtuve ninguna información útil. My bad
maneeshshetty

Respuestas:

44

Un agente es un programa que mantiene sus claves en la memoria para que solo necesite desbloquearlas una vez , en lugar de cada vez. ssh-agent hace esto para las claves SSH.

Los métodos habituales para iniciar ssh-agent son:

  • eval `ssh-agent`- esto ejecuta el agente en segundo plano y establece las variables de entorno apropiadas para la instancia de shell actual .

    ( ssh-agent , cuando se inicia sin argumentos, genera comandos para que sean interpretados por su shell).

  • exec ssh-agent bash- inicia una nueva instancia del bashshell, reemplazando la actual.

    (Con uno o más argumentos, ssh-agent no genera nada, pero inicia el comando especificado: en este caso, el bashshell, pero técnicamente podría ser cualquier cosa).

    A veces se prefiere el segundo método, ya que automáticamente mata a ssh-agent cuando cierra la ventana de terminal. (Al iniciarlo eval, el agente seguirá ejecutándose, pero inaccesible)

Sin embargo, esto solo inicia un agente vacío. Para hacerlo realmente útil, debe usar ssh-add , que desbloquea sus claves (generalmente ~/.ssh/id_*) y las carga en el agente, haciéndolas accesibles a las conexiones ssh o sftp .

Gravedad
fuente
3
¿Hay alguna manera de iniciar ssh-agent en varias sesiones de bash, una vez?
Asim
9

Además, es posible que desee agregar algunas claves al inicio de la sesión.

Edite su ~/.bashrcarchivo y agregue:

ssh-add &>/dev/null || eval `ssh-agent` &>/dev/null  # start ssh-agent if not present
[ $? -eq 0 ] && {                                     # ssh-agent has started
ssh-add ~/.ssh/your_private.key1 &>/dev/null        # Load key 1
ssh-add ~/.ssh/your_private.key2 &>/dev/null        # Load key 2
}

Comprueba tus llaves con ssh-add -l

Puede detener la sesión actual de ssh-agent con ssh-agent -k

Algo que debe saber sobre ssh-agent y .bashrc es no cargar demasiadas claves. El número predeterminado de intentos para ssh daemon está limitado a 6. Esto se puede modificar /etc/ssh/sshd_configcon el MaxAuthTriesvalor.

usuario1293603
fuente
1
¿Qué pasa con la contraseña de clave privada cuando se inicia ssh-addcon "&"? ¿Asume que los archivos de clave privada no están protegidos?
Luciano
El código anterior solicita la frase de contraseña dos veces, una cuando se verifica si ssh-agent está disponible y otra vez cuando se carga la clave privada.
Tapan Chandra