Pour exécuter ssh-agent
Je dois utiliser
eval $(ssh-agent)
Pourquoi dois-je eval
la sortie de ssh-agent
?
Pourquoi n'est-il pas conçu pour que je puisse simplement l'exécuter?
Remarque: les backticks (`) sont supprimés car ils sont obsolètes. Vous pouvez en savoir plus ici par exemple .
ssh-agent
affiche les variables d'environnement dont vous avez besoin pour vous y connecter:
shadur@proteus:~$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-492P67qzMeGA/agent.7948; export SSH_AUTH_SOCK;
SSH_AGENT_PID=7949; export SSH_AGENT_PID;
echo Agent pid 7949;
shadur@proteus:~$
En appelant eval
, vous chargez immédiatement ces variables dans votre environnement.
Quant à savoir pourquoi ssh-agent
ne peut pas le faire lui-même ... Notez le choix de Word. Pas "ne sera pas", "ne peut pas". Sous Unix, un processus ne peut modifier que ses propres variables d'environnement et les transmettre aux enfants. Il ne peut pas modifier l'environnement de son processus parent car le système ne le permet pas. Il s'agit d'une conception de sécurité assez basique.
Vous pouvez contourner le eval
en utilisant ssh-agent utility
où utility
est votre shell de connexion, votre gestionnaire de fenêtres ou toute autre chose dont les variables d'environnement SSH doivent être définies. Ceci est également mentionné dans le manuel.