web-dev-qa-db-fra.com

Pourquoi évaluer la sortie de ssh-agent?

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 .

77
jx12345

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 utilityutility 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.

89
Shadur