通过 ssh 连接到我的桌面时 ssh-agent 不起作用

通过 ssh 连接到我的桌面时 ssh-agent 不起作用

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 客户端将无法与代理通信。

我认为这就是你的情况发生的情况:

  1. 当您登录到计算机时,未设置 SSH_AUTH_SOCK。 ssh 客户端不知道有 ssh 代理。
  2. eval $(ssh-agent -s)启动另一个 ssh 代理并在当前 shell 中设置 SSH_AUTH_SOCK。 ssh 客户端可以与新代理进行通信。
  3. 然后您注销并再次登录,SSH_AUTH_SOCK 再次未设置。

您可以在 .bashrc 中设置 SSH_AUTH_SOCK ,以便所有将来的 bash 会话都将获得此变量集。每次终止 ssh 代理并运行新代理时,您都必须记住更新 .bashrc。

相关内容