11 votes

Faire en sorte que ma clé SSH protégée par un mot de passe expire ou dépasse le délai d'attente après un certain temps

J'ai une clé privée SSH que j'utilise pour l'authentification et qui est stockée dans ~/.ssh/id_rsa . Lorsque je me connecte à un serveur par ssh, on me demande le mot de passe pour déverrouiller la clé :

enter image description here

J'aime ça. J'aime aussi le fait que je puisse me connecter à plusieurs reprises et qu'il ne me demande pas mon mot de passe.

Ce que je n'aime pas, c'est qu'on ne me demande pas d'entrer mon mot de passe clé des jours, voire des semaines plus tard. Je peux verrouiller mon écran ou le mettre en veille et je n'ai toujours pas à saisir mon mot de passe clé. Le seul moment où le mot de passe semble expirer est lorsque je me déconnecte (ce que je fais rarement).

Comment faire en sorte que le mot de passe de la clé expire après un certain temps, ce qui m'oblige à entrer à nouveau mon mot de passe pour m'authentifier ? En faisant en sorte que, peut-être après une heure, la clé soit automatiquement oubliée.

8voto

Tony Williams Points 11219

Vous devez définir la durée de vie de la clé. La valeur par défaut est habituellement "forever".

Lorsque vous exécutez ssh-add vous voulez utiliser le -t option. Si vous souhaitez une durée de vie de la clé d'une heure, alors c'est ssh-add -t 1h . Les formats de temps peuvent être vus dans le sshd_config mais pour faire simple, il s'agit d'un nombre suivi de s, m, h, d, ou w pour les secondes, minutes, heures, jours ou semaines.

ssh-add peut être placé dans votre fichier .bashrc et il vous demandera juste de valider la clé une fois. Même lorsque la clé "expire", elle n'est pas supprimée - il suffit de redemander la phrase de passe lorsqu'on tente de l'utiliser.

L'autre option consisterait à modifier les options de lancement de l'application ssh-agent qui sont stockées dans /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist et ajoutez le -t là. (J'utilise LaunchControl pour les changer mais vous pouvez le faire à la main si vous êtes prudent).

8voto

jeski Points 21

Nota : dans les versions plus récentes d'OS X, vous devez désactiver la protection de l'intégrité du système pour que cette réponse fonctionne. (Merci à @Dave Gregory et @Jaap de l'avoir signalé).

Ouvrir /System/Library/LaunchAgents/com.openssh.ssh-agent.plist (dans les anciennes versions : org.openbsd.ssh-agent.plist ) dans un éditeur de texte. Remplacer :

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

avec :

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

Ceci fera expirer la clé après 30 minutes.

Redémarrage. Attends, redémarrer ? !? Ce n'est pas Windows ! Oui, redémarre.

Eh bien, vous pouvez essayer de déchiffrer les instructions pour modifier le réglage à la volée mais bonne chance.

5voto

Dave Gregory Points 168

Plutôt que de modifier ssh-agent (ce qui nécessite maintenant une quantité ridicule de piratage), je recommande fortement de modifier simplement les paramètres de votre trousseau de clés (de connexion) par défaut. J'utilise les très utiles "lock on sleep" (verrouiller en dormant) ainsi que "lock after 4 hours" (verrouiller après 4 heures) parce que je ne veux pas d'invites à moins d'être vraiment afk.

Ouvrez Keychain Access et cliquez avec le bouton droit de la souris sur le trousseau de connexion pour modifier les paramètres : Keychain Security Settings

Ou si vous préférez une ligne de commande :

security set-keychain-settings -lu -t 14400

Cela se traduira par au moins une invite supplémentaire pour déverrouiller le trousseau lui-même (nécessitant votre mot de passe de connexion) ainsi que l'invite pour la clé que vous essayez d'utiliser ... mais c'est mieux que de désactiver la protection de l'intégrité du système IMO.

1voto

symsymmas Points 11

Une autre solution est :

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.

Avec cette solution, vous n'avez pas à choisir un délai d'attente pour tous vos trousseaux de clés - ce qui est assez ennuyeux lorsque vous voulez fixer un délai de quelques secondes pour l'enregistrement du mot de passe de votre clé privée - et vous n'avez pas à désactiver votre SIP pour éditer /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X