Tengo una clave SSH privada que uso para la autenticación que está almacenada en ~/.ssh/id_rsa . Cuando entro en un servidor, se me solicita la contraseña para desbloquear la clave:
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 tengo que ingresar mi contraseña clave días o incluso semanas después. Puedo bloquear mi pantalla o ponerla en suspensión y todavía no tengo que ingresar mi contraseña clave. La única vez que parece que la contraseña caduca es cuando me desconecto (lo cual rara vez hago).
¿Cómo hago para que la contraseña de la clave caduque después de un tiempo, obligándome a ingresar mi contraseña nuevamente para autenticar? Haciendo que tal vez después de 1 hora, la clave se olvide automáticamente.
En lugar de ajustar ssh-agent (que ahora requiere una cantidad tonta de piratería), recomiendo simplemente cambiar la configuración en su llavero predeterminado (de inicio de sesión). Utilizo el muy útil 'bloqueo al dormir' así como 'bloqueo después de 4 horas' porque no quiero avisos a menos que realmente esté afk.
Abra Acceso a Llaveros y haga clic con el botón derecho en el llavero de inicio de sesión para cambiar la configuración:
O si prefiere una línea de comandos:
security set-keychain-settings -lu -t 14400
Esto dará como resultado al menos un aviso adicional para desbloquear el llavero (que requiere su contraseña de inicio de sesión), así como el aviso para cualquier clave que esté tratando de usar... pero es mejor que deshabilitar la Protección de integridad del sistema IMO.
Nota : en las versiones más recientes de OS X, debe deshabilitar la Protección de integridad del sistema para que esta respuesta funcione. (Gracias a @Dave Gregory y @Jaap por señalar esto).
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 caduque la clave después de 30 minutos.
Reiniciar. Espera, reiniciar?!? ¡Esto no es Windows! Sí, reinicia.
Bueno, puedes intentar descifrar las instrucciones para cambiar la configuración sobre la marcha , pero buena suerte.
com.openssh.ssh-agent.plist
): developer.apple.com/library/content/documentation/Security/…Necesita configurar la vida de la llave. Por lo general, el valor predeterminado es para siempre.
Cuando corres ssh-add
quieres usar la -t
opción. Si desea una vida clave de una hora, entonces lo es ssh-add -t 1h
. Los formatos de tiempo se pueden ver en la sshd_config
página del manual, 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 solo le pedirá que valide la clave una vez. Incluso cuando la clave "caduca", no se elimina, solo solicita la frase de contraseña nuevamente cuando se intenta usarla.
La otra opción sería modificar las opciones de lanzamiento para ssh-agent
las que están almacenadas /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist
y agregarlas -t
allí. (Los uso LaunchControl
para cambiarlos, pero puedes hacerlo a mano si tienes cuidado).
ssh-add
manualmente antes de ejecutar ssh
cada vez. Es interesante, pero realmente estoy buscando algo automático.org.openbsd.ssh-agent.plist
soluciónOtra 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, algo bastante molesto cuando desea establecer un tiempo de espera de algunos segundos para la grabación de su contraseña de clave privada, y no tiene que deshabilitar su SIP para editar /Sistema/ Biblioteca/LaunchAgents/org.openbsd.ssh-agent.plist.
ian
David Gregorio