我的 MacBook 上运行着 ssh-agent。我使用 ssh -A 并将密钥转发到我的 Redhat 盒子。
但令我惊讶的是,当我在 redhat 机器上执行“ssh-add -D”时,密钥不仅在本地消失,而且还在我的 MacBook 上被删除。这是怎么回事?
好像有些管道一直开着。
答案1
ssh-add 通过 Unix 域套接字连接到正在运行的代理。SSH_AUTH_SOCK 环境变量保存套接字的路径。ssh-add 检查变量并连接到可通过套接字访问的代理,而不是本地运行的代理。
当您通过 ssh 进入一台设置了 -o ForwardAgent=yes 的机器时,上述变量将被设置为指向连接到原始主机中运行的代理的套接字。
如果您希望 ssh-add 连接到本地运行的代理,请将上述变量指向本地代理正在监听的套接字的路径。您可以通过获取本地代理套接字sudo lsof -p $(pgrep ssh-agent)
并在 /tmp 中查找套接字类型的文件。