我ssh-agent
在桌面上运行过,运行正常。这意味着我可以使用我的 ssh 密钥而无需密码。
当我通过 ssh 连接到桌面时,我突然无法使用 ssh 代理 - ssh 要求我输入密码。
我可以看到ps
正在ssh-agent
运行。
当我这样做时eval $(ssh-agent -s) && ssh-add
,它会要求我输入密码,ssh-agent
并将在当前的 ssh 会话中工作。一旦我退出并再次登录,它就不再起作用了。
另外,我看到ps
它已经启动了 的新实例ssh-agent
。所以我有多个实例正在运行。
为什么当我通过 ssh 连接时代理不起作用?为什么我每次都要重新开始?
我使用的是Debian 10 上的openssh-client
版本1:7.9p1-10+deb10u2
,客户端和服务器上都有。
答案1
ssh 客户端使用 shell 变量 SSH_AUTH_SOCK 与 ssh 代理进行通信。该变量包含代理侦听的套接字。如果未设置或设置不正确,您的 ssh 客户端将无法与代理通信。
我认为这就是你的情况发生的情况:
- 当您登录到计算机时,未设置 SSH_AUTH_SOCK。 ssh 客户端不知道有 ssh 代理。
eval $(ssh-agent -s)
启动另一个 ssh 代理并在当前 shell 中设置 SSH_AUTH_SOCK。 ssh 客户端可以与新代理进行通信。- 然后您注销并再次登录,SSH_AUTH_SOCK 再次未设置。
您可以在 .bashrc 中设置 SSH_AUTH_SOCK ,以便所有将来的 bash 会话都将获得此变量集。每次终止 ssh 代理并运行新代理时,您都必须记住更新 .bashrc。