Debian
通過 ssh 連接到我的桌面時,ssh-agent 不起作用
我
ssh-agent
在我的桌面上執行,它工作正常。這意味著我可以在沒有密碼的情況下使用我的 ssh 密鑰。當我通過 ssh 連接到我的桌面時,我突然無法使用我的 ssh-agent - 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
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。