看一下以下 shell 会话:
niklas@llw ~ % ssh-agent && ssh-add
SSH_AUTH_SOCK=/tmp/ssh-ZzWYJAmK8809/agent.8809; export SSH_AUTH_SOCK;
SSH_AGENT_PID=8810; export SSH_AGENT_PID;
echo Agent pid 8810;
Enter passphrase for /home/niklas/.ssh/id_rsa:
Identity added: /home/niklas/.ssh/id_rsa (/home/niklas/.ssh/id_rsa)
niklas@llw ~ % killall ssh-agent
niklas@llw ~ % ssh-agent && ssh-add
SSH_AUTH_SOCK=/tmp/ssh-TNMkMvgP8880/agent.8880; export SSH_AUTH_SOCK;
SSH_AGENT_PID=8881; export SSH_AGENT_PID;
echo Agent pid 8881;
Could not open a connection to your authentication agent.
为什么我只能运行ssh-agent && ssh-add
一次?
答案1
首先,我建议您仔细检查,确保您尚未运行代理。我怀疑您已经有一个代理在运行。然后,您启动了第二个代理,但没有正确更新环境。您的 ssh-add 与原始代理进行了通信。然后,您终止了所有代理,并尝试启动一个新代理,但没有正确更新环境,以下 ssh-add 无法联系您已终止的原始代理。
接下来,您需要了解,当 SSH 代理启动时,它会吐出一个需要用来更新环境的脚本。这就是客户端程序知道如何联系代理的方式。一种方法是使用以下命令。
. <(ssh-agent)
ssh-add