Hacer que la clave SSH protegida con contraseña caduque o se agote el tiempo de espera después de un tiempo

11

Tengo una clave SSH privada que uso para la autenticación que está almacenada en ~ / .ssh / id_rsa . Cuando ssh en un servidor, me piden la contraseña para desbloquear la clave:

Me gusta esto. También me gusta que pueda ssh una y otra vez y no me pide mi contraseña.

Lo que no me gusta es que no estoy obligado a ingresar mi contraseña clave días o incluso semanas después. Puedo bloquear mi pantalla o ponerla en suspensión y aún no tengo que ingresar mi contraseña clave. La única vez que parece que caduque la contraseña es cuando cierro la sesión (lo cual hago raramente).

¿Cómo puedo hacer que la contraseña de clave caduque al cabo de un tiempo, lo que me obliga a ingresar mi contraseña nuevamente para autenticarme? Haciendo que tal vez después de 1 hora, la clave se olvide automáticamente.

    
pregunta Michael Kropat 22.01.2014 - 03:49

4 respuestas

4

En lugar de ajustar ssh-agent (que ahora requiere grandes cantidades de piratería), le recomiendo que simplemente cambie la configuración en su llavero predeterminado (inicio de sesión). Utilizo el muy útil "bloqueo de suspensión" y el "bloqueo después de 4 horas" porque no quiero indicaciones a menos que esté realmente loco.

Abra el acceso al llavero y haga clic con el botón derecho en el llavero de inicio de sesión para cambiar la configuración:

O si prefieres una línea de comandos:

security set-keychain-settings -lu -t 14400

Esto dará como resultado al menos un mensaje adicional para desbloquear el llavero (que requiere su contraseña de inicio de sesión), así como el mensaje de la tecla que intenta usar ... pero es mejor que la inhabilitación de la Protección de la Integridad del Sistema (IMO). / p>     

respondido por el Dave Gregory 19.11.2015 - 12:30
9

Nota : en las versiones más recientes de OS X, debe deshabilite la Protección de integridad del sistema para que esta respuesta funcione. (Gracias a @Dave Gregory y @Jaap por señalar esto).

Abra /System/Library/LaunchAgents/com.openssh.ssh-agent.plist (en versiones anteriores: org.openbsd.ssh-agent.plist ) en un editor de texto. Reemplazar:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/ssh-agent</string>
    <string>-l</string>
</array>

con:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/ssh-agent</string>
    <string>-l</string>
    <string>-t</string>
    <string>30m</string>
</array>

Esto vencerá la clave después de 30 minutos.

Reiniciar. Espera, ¿reinicio?!? ¡Esto no es Windows! Sí, reiniciar.

Bueno, puedes intentar descifrar las instrucciones para cambiar la configuración sobre la marcha , pero buena suerte.

    
respondido por el Michael Kropat 25.01.2014 - 06:53
7

Necesitas establecer la vida de la clave. Por lo general, el valor predeterminado es para siempre.

Cuando ejecutas ssh-add quieres usar la opción -t . Si quieres una vida clave de una hora, entonces es ssh-add -t 1h . Los formatos de hora se pueden ver en la página de manual sshd_config pero, simplemente, son un número seguido de s, m, h, d o w para segundos, minutos, horas, días o semanas.

ssh-add se puede colocar en su archivo .bashrc y solo le pedirá que valide la clave una vez. Incluso cuando la clave "expira" no se elimina, solo solicita la frase de contraseña nuevamente cuando se intenta utilizarla.

La otra opción sería alterar las opciones de inicio para ssh-agent que se almacenan en /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist y agregar el -t allí. (Yo uso LaunchControl para cambiarlos, pero puedes hacerlo a mano si tienes cuidado).

    
respondido por el Tony Williams 22.01.2014 - 04:35
1

Otra solución es:

ssh-add -t <time> <ssh-private-key>  # Set maximum lifetime to your SSH priv key.
killall ssh-agent                    # Kill all ssh-agent processes.
ssh-add -D                           # Delete all identities recorded by the agent.

Con esta solución, no tiene que elegir un tiempo de espera para todo su llavero, lo que es bastante molesto cuando desea establecer un tiempo de espera de algunos segundos para la grabación de la contraseña de su clave privada, y no tiene que deshabilitar su SIP para editar /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist.

    
respondido por el symsymmas 22.04.2017 - 11:55

Lea otras preguntas en las etiquetas