ssh key persiste incluso después de eliminar la clave privada de ~ / .ssh - ¿por qué?

14

Generé claves ssh (públicas y privadas) y las almacené en ~/.ssh/myServer/ .

Agregué la clave pública al archivo ~/.ssh/authorized_keys del servidor y ¡todo funciona muy bien!

En mi esfuerzo por tratar de comprender cómo funcionan las claves, las eliminé y me sorprendió descubrir que aún podía conectarme al servidor.

¿Por qué es que todavía puedo conectarme sin una contraseña?

    
pregunta FAYNUS 12.01.2015 - 05:48

1 respuesta

21

Bienvenido al maravilloso mundo de OS X Keychain y ssh-agent ! Desde la página del manual:

  

ssh-agent es un programa para guardar claves privadas utilizadas para la autenticación de claves públicas (RSA, DSA, ECDSA). los        La idea es que ssh-agent se inicie al comienzo de una sesión X o sesión de inicio de sesión, y todos los demás        Las ventanas o programas se inician como clientes del programa ssh-agent. A través del uso de variables de entorno variables.        El agente puede ubicarse y utilizarse automáticamente para la autenticación al iniciar sesión en otros        máquinas que utilizan ssh (1).

Su clave privada se almacenó en caché en el agente y se está recuperando desde allí para autenticar su sesión. OS X, a través de Keychain, realiza el almacenamiento automático en caché de ssh-agent para usted porque es "fácil de usar". Puede ser un poco alarmante, pero en su mayoría es algo práctico que esto suceda.

El tiempo de vida predeterminado para las claves en caché es para siempre. Probablemente no sea un gran defecto. Se vaciarán las claves almacenadas en caché en un ciclo de cierre de sesión / inicio de sesión o un reinicio. O puede forzar una descarga matando al agente actual usando:

ssh-add -D

Puede enumerar todas las credenciales almacenadas en caché por el agente ejecutando:

ssh-add -l

Esto hará lo mismo pero mostrará las claves públicas completas:

ssh-add -L
    
respondido por el Ian C. 12.01.2015 - 05:58

Lea otras preguntas en las etiquetas