clés ssh ssh-agent bash et ssh-add

28

Je suis nouveau dans les clés ssh. Quelqu'un peut-il expliquer comment le ssh-agent bashet ssh-addfonctionne?

J'ai besoin de comprendre ses internes à l'avenir.

maneeshshetty
la source
Avez-vous essayé le meilleur hit Google pour l'un de ces termes?
Daniel Beck
Oui je l'ai fait. Je n'ai pas obtenu d'informations utiles. My bad
maneeshshetty

Réponses:

44

Un agent est un programme qui garde vos clés en mémoire afin que vous n'ayez besoin de les déverrouiller qu'une fois , au lieu de chaque fois. ssh-agent le fait pour les clés SSH.

Les méthodes habituelles pour démarrer ssh-agent sont:

  • eval `ssh-agent`- cela exécute l'agent en arrière-plan et définit les variables d'environnement appropriées pour l' instance de shell actuelle .

    ( ssh-agent , lorsqu'il est démarré sans arguments, génère des commandes à interpréter par votre shell.)

  • exec ssh-agent bash- démarre une nouvelle instance du bashshell, remplaçant celle en cours.

    (Avec un ou plusieurs arguments, ssh-agent ne produit rien, mais démarre la commande spécifiée: dans ce cas, le bashshell, mais techniquement, cela pourrait être n'importe quoi.)

    La deuxième méthode est parfois préférée, car elle tue automatiquement ssh-agent lorsque vous fermez la fenêtre du terminal. (Au démarrage eval, l'agent resterait en cours d'exécution, mais inaccessible.)

Cependant, cela ne démarre qu'un agent vide. Pour le rendre réellement utile, vous devez utiliser ssh-add , qui déverrouille vos clés (généralement ~/.ssh/id_*) et les charge dans l'agent, les rendant accessibles aux connexions ssh ou sftp .

grawity
la source
3
Existe-t-il un moyen de démarrer ssh-agent sur plusieurs sessions bash, une fois?
Asim
9

En outre, vous souhaiterez peut-être ajouter des clés au début de la session.

Modifiez votre ~/.bashrcfichier et ajoutez:

ssh-add &>/dev/null || eval `ssh-agent` &>/dev/null  # start ssh-agent if not present
[ $? -eq 0 ] && {                                     # ssh-agent has started
ssh-add ~/.ssh/your_private.key1 &>/dev/null        # Load key 1
ssh-add ~/.ssh/your_private.key2 &>/dev/null        # Load key 2
}

Vérifiez vos clés avec ssh-add -l

Vous pouvez arrêter la session ssh-agent en cours avec ssh-agent -k

Quelque chose à savoir sur ssh-agent et .bashrc est de ne pas charger trop de clés. Le nombre par défaut d'essais pour le démon ssh est limité à 6. Cela peut être modifié /etc/ssh/sshd_configavec la MaxAuthTriesvaleur.

user1293603
la source
1
Qu'en est-il du mot de passe de la clé privée lors du lancement ssh-addavec "&"? Supposez-vous que les fichiers de clés privées ne sont pas protégés?
Luciano
Le code ci-dessus demande la phrase secrète deux fois, une fois lors de la vérification de la disponibilité de ssh-agent et une nouvelle fois lors du chargement de la clé privée.
Tapan Chandra