Je suis nouveau sur les clés SSH. Quelqu'un peut-il expliquer le fonctionnement de ssh-agent bash
et ssh-add
?
J'ai besoin de comprendre ses composants internes à l'avenir.
Un agent est un programme qui garde vos clés en mémoire de sorte qu'il ne vous reste plus qu'à les déverrouiller une fois , au lieu de chaque fois. ssh-agent fait cela pour les clés SSH.
Les méthodes habituelles pour démarrer ssh-agent sont les suivantes:
eval `ssh-agent`
- ceci 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 argument, génère des commandes à interpréter par votre shell.)
exec ssh-agent bash
- démarre une nouvelle instance du shell bash
, remplaçant celle actuelle.
(Avec un ou plusieurs arguments, ssh-agent ne génère rien, mais lance la commande spécifiée: dans ce cas, le shell bash
, mais techniquement ça 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. (Lors du démarrage avec eval
, l'agent resterait en cours d'exécution, mais inaccessible.)
Cependant, ceci ne démarre qu'un agent vide. Pour le rendre 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 .
En outre, vous souhaiterez peut-être ajouter des clés au début de la session.
Editez votre fichier ~/.bashrc
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
Il faut savoir que ssh-agent et .bashrc ne chargent pas trop de clés. Le nombre de tentatives par défaut pour le démon ssh est limité à 6. Cela peut être modifié dans /etc/ssh/sshd_config
avec la valeur MaxAuthTries
.