为什么要评估 ssh-agent 的输出?

为什么要评估 ssh-agent 的输出?

为了运行ssh-agent我必须使用:

eval $(ssh-agent)

为什么需要eval输出ssh-agent?为什么我不能运行它?

答案1

ssh-agent输出您需要连接到它的环境变量:

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:~$ 

通过调用,eval您可以立即将这些变量加载到您的环境中。

至于为什么ssh-agent自己不能这样做……注意这个词的选择。不是“不会”,“不能在Unix中,一个进程只能修改自己的环境变量,并将它们传递给子进程。不能修改其父进程的环境,因为系统不允许。这是非常基本的安全设计。

eval您可以通过使用您的登录 shell、窗​​口管理器或任何其他需要设置 SSH 环境变量的东西来ssh-agent utility解决这个问题。utility说明书上也提到了这一点。

相关内容