Debian

通過 ssh 連接到我的桌面時,ssh-agent 不起作用

  • July 22, 2021

ssh-agent在我的桌面上執行,它工作正常。這意味著我可以在沒有密碼的情況下使用我的 ssh 密鑰。

當我通過 ssh 連接到我的桌面時,我突然無法使用我的 ssh-agent - ssh 要求我輸入密碼。

我可以看到psssh-agent正在執行。

當我這樣做時eval $(ssh-agent -s) && ssh-add,它會要求我輸入密碼並ssh-agent在目前的 ssh 會話中工作。一旦我註銷並再次登錄,它就不再起作用了。

另外,我看到ps它已經開始了新的ssh-agent. 所以我有多個實例正在執行。

為什麼當我通過 ssh 連接時代理不起作用?為什麼我每次都要開始新的?

我在客戶端和伺服器上都使用 Debian 10 上的openssh-client版本。1:7.9p1-10+deb10u2

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。

引用自:https://unix.stackexchange.com/questions/659409