ssh-agent
gera as variáveis de ambiente que você precisa para se conectar a ele:
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:~$
Ao chamar eval
, você carrega imediatamente essas variáveis em seu ambiente.
Quanto ao porquê ssh-agent
não pode fazer isso em si ... Observe a escolha da palavra. Não "não", " não pode ". No Unix, um processo só pode modificar suas próprias variáveis de ambiente e passá-las para as crianças. não pode modificar o ambiente do processo pai porque o sistema não permite isso. Esse é um projeto de segurança bem básico.
Você poderia contornar o eval
usando ssh-agent utility
, em que utility
é seu shell de login, seu gerenciador de janelas ou qualquer outra coisa que precise definir as variáveis de ambiente SSH. Isso também é mencionado no manual.