J'ai lu la définition officielle:
ssh-agent est un programme destiné à contenir les clés privées utilisées pour l'authentification par clé publique (RSA, DSA, ECDSA). L'idée est que ssh-agent est démarré au début d'une session X ou d'une session de connexion, et que toutes les autres fenêtres ou programmes sont lancés en tant que clients du programme ssh-agent. Grâce à l'utilisation de variables d'environnement, l'agent peut être localisé et utilisé automatiquement pour l'authentification lors de la connexion à d'autres machines à l'aide de ssh (1).
"..un programme pour contenir des clés privées .." - IMHO - les clés ssh sont générées par l'utilisateur avec la commande ssh-keygen et sont simplement et simplement stockées dans ~ / .ssh - pourquoi ai-je besoin d'un démon pour les contenir? Comment cela les tient-il exactement de toute façon - ne sont-ils pas simplement stockés dans .ssh?
"sont démarrés en tant que clients du programme ssh-agent" - je ne comprends pas. Où aurait-on besoin de ça? J'utilise généralement juste ssh comme ceci:
ssh -i ~/.ssh/private_key_name username@hostname
Qu'entend-on exactement par manuel par "clients" - quels clients? N'exécutez pas simplement la commande ssh à partir d'un terminal pour vous connecter - quels sont les autres clients présents et pourquoi ne peuvent-ils pas simplement utiliser un chemin d'accès à ce fichier privé ssh, tout comme la commande ssh?
~/.ssh/config
l »IdentityFile
option est bon pour, avec ou sans l'agent~/.ssh/config
clé quelle clé utiliser pour quel hôte distant, afin qu'il sache exactement de quelle clé il a besoin.ssh-agent
n'est pas nécessaire si une clé privée n'est pas protégée par une phrase secrète?L'avantage
ssh-agent
est qu'il vous suffit d'entrer votre phrase secrète une seule fois. Si votre clé RSA privée n'est pas chiffrée avec une phrase secrète, ssh-agent n'est pas nécessaire. Lassh
commande serait un exemple de client.la source
Si vous vous connectez régulièrement
ssh
à différentes machines, chacune avec sa propre clé et phrase secrète, exécuterssh-agent
vous permet de saisir la phrase secrète de chaque clé 1 une fois au début de votre session, puis de vous authentifier autant de fois que nécessaire sur chaque machine. comme vous le souhaitez sans avoir à ressaisir votre phrase secrète.Un autre avantage est que, conformément à la
man
page, l'agent n'envoie jamais de clé privée sur son canal de requête. Par conséquent, si vous naviguez entre différentes boîtes, vos clés privées sont protégées.1 Vous pouvez définir la
life
durée de conservation des clés dans l'agent.la source
L'article Wikipedia a probablement la meilleure description:
Encore une fois, extrait de l'article de Wikipédia:
Il est généralement placé dans les fichiers rc du système ou de l'utilisateur, tels que
$HOME/.bashrc
ou$HOME/.profile
(pour les shells bash), de sorte que l'ssh-agent
ensemble des variables d' environnement soit complètement intégré à votre environnement.Sur mon système Fedora 14, il démarre assez tôt dans le sous-système X11. Dans ce fichier
/etc/X11/xinit/xinitrc-common
:La variable
$SSH_AGENT
est ensuite utilisée dans d'autres scripts de démarrage X11 tels que ceux-ci/etc/X11/xinit/Xclients
:En l'intégrant ici, les variables d'environnement suivantes sont définies dans le cadre d'un shell parent. Par conséquent, tous les enfants forkés doivent également en disposer, par exemple:
Ceci est un peu plus complexe, mais en un mot c'est ce qui se passe
ssh-agent
.Par exemple, dans GNOME,
ssh-agent
est lancé par utilisateur en tant qu’application de démarrage:TL; DR
En bout de ligne,
ssh-agent
existe, de sorte que lorsque vos clés ssh sont requises, vous ne devez les déverrouiller qu’une fois avec leur phrase secrète (en supposant qu’elles en aient une), puis elles sont disponibles sous leur forme déchiffrée en mémoire (RAM).la source
« sont lancés en tant que clients du programme ssh-agent » fait référence à l'idée que ssh-agent est démarré au cours (local) initialisation de la session de connexion afin que tous les programmes obtiennent les variables d'environnement
$SSH_AGENT_PID
et$SSH_AUTH_SOCK
qui sont nécessaires pour connecter l'agent.Un autre avantage de la gestion de la clé privée dans ssh est que ssh-agent peut être remplacé par gpg-agent. Ainsi, vous pouvez utiliser des clés OpenPGP (avec capacité d'authentification) pour SSH. C'est une solution intéressante pour les clés OpenPGP sur une carte à puce.
la source