11 votos

Hacer que mi clave SSH protegida por contraseña caduque o se agote después de un tiempo

Tengo una clave SSH privada que utilizo para la autenticación que se almacena en ~/.ssh/id_rsa . Cuando hago ssh en un servidor, se me pide la contraseña para desbloquear la clave:

enter image description here

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

Lo que no me gusta es que no se me pida que introduzca mi contraseña clave días o incluso semanas después. Puedo bloquear mi pantalla o ponerla en reposo y aún así no tengo que introducir mi contraseña clave. La única vez que parece caducar la contraseña es cuando cierro la sesión (lo que hago raramente).

¿Cómo consigo que la contraseña de la llave caduque al cabo de un tiempo, obligándome a introducir de nuevo la contraseña para autentificarme? Haciendo que quizás después de 1 hora, la clave se olvide automáticamente.

8voto

jeski Puntos 11

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

Abrir /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 hará que la clave expire después de 30 minutos.

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

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

8voto

Tony Williams Puntos 4903

Hay que fijar la duración de la llave. Por lo general, el valor predeterminado es "para siempre".

Cuando se ejecuta ssh-add desea utilizar el -t opción. Si desea una duración de la llave de una hora, entonces es ssh-add -t 1h . Los formatos de tiempo se pueden ver en el sshd_config pero en pocas palabras son un número seguido de s, m, h, d, o w para segundos, minutos, horas, días o semanas.

ssh-add se puede poner en su archivo .bashrc y sólo le pedirá que valide la clave una vez. Incluso cuando la clave "expira" no se elimina - sólo pide la frase de contraseña de nuevo cuando se intenta utilizarla.

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

5voto

SA. Puntos 150

En lugar de ajustar ssh-agent (que ahora requiere cantidades tontas de hacking), recomiendo encarecidamente cambiar la configuración de su llavero por defecto (de inicio de sesión). Yo utilizo el muy útil 'bloquear al dormir' así como 'bloquear después de 4 horas' porque no quiero avisos a menos que esté realmente afk.

Abra Keychain Access y haga clic con el botón derecho en el llavero de inicio de sesión para cambiar la configuración: Keychain Security Settings

O si prefieres una línea de comandos:

security set-keychain-settings -lu -t 14400

Esto resultará en al menos un aviso extra para desbloquear el llavero en sí mismo (requiriendo su contraseña de inicio de sesión), así como el aviso para cualquier llave que esté tratando de usar... pero es mejor que deshabilitar la Protección de Integridad del Sistema IMO.

1voto

Prasanna Puntos 125

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 tienes que elegir un tiempo de espera para todo tu llavero - bastante molesto cuando quieres establecer un tiempo de espera de algunos segundos para la grabación de tu clave privada - y no tienes que desactivar tu SIP para editar /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X