Enregistrer la phrase secrète de la clé SSH à l'aide du trousseau avec l'option --noask

10

Je veux utiliser le trousseau pour gérer l'invite de phrase secrète pour les clés SSH, mais il devrait 1) le demander uniquement lorsque j'utilise réellement la clé et 2) l'enregistrer pendant une certaine période de temps après cela. J'ai actuellement 2 options:

  1. $ eval `keychain --eval --agents ssh id_rsa` - qui demandera toujours une phrase secrète au démarrage mais ensuite il la sauvegardera.
  2. $ eval `keychain --eval --noask --agents ssh id_rsa` - cela ne demandera rien au démarrage mais continuera à demander une phrase secrète chaque fois que j'utiliserai cette clé.

Existe-t-il un moyen de combiner les avantages de ces méthodes?

anlar
la source

Réponses:

9

Les ssh-agentversions récentes d'OpenSSH simplifient les choses:

  1. Commencez normalement ssh-agentavec un délai par défaut pour les touches ajoutées (60 minutes par exemple):

    eval `ssh-agent -t 60m`
    
  2. Configurez votre sshpour ajouter des clés réellement utilisées à l'agent. Ajoutez une nouvelle ligne à ~ / .ssh / config`:

    AddKeysToAgent yes
    

    Cette fonctionnalité est disponible dans la dernière version d'OpenSSH 7.2. Dans les versions précédentes, vous devez ajouter la clé à l'agent manuellement, si votre délai est dépassé, mais il peut être tout simplement automatisé à l'aide de la fonction bash, quelque chose comme ceci:

    ssh() {
      /bin/ssh -o BatchMode=yes $* || \
        ssh-add path/to/the-key && /bin/ssh $*
    }
    

    L'idée: essayez de vous connecter en utilisant la clé en mode batch (ne demandera pas de phrase secrète et échouera, si la clé n'est pas là) et en cas d'échec, ajoutez la clé à l'agent et réexécutez la commande ssh.

Jakuje
la source