即使代理正在運行,ssh-add也會返回“連接到代理時出錯:沒有這樣的檔案或目錄”

即使代理正在運行,ssh-add也會返回“連接到代理時出錯:沒有這樣的檔案或目錄”

Windows 10 20H2,內部版本 19042.685

我正在嘗試在 Windows 10 上的內建 OpenSSH 用戶端中使用 SSH 代理程式。

C:\Users\Daniel> Get-Service | ?{$_.Name -like '*ssh-agent*'}

Status   Name               DisplayName
------   ----               -----------
Running  ssh-agent          OpenSSH Authentication Agent

但是,ssh-add仍然拋出相同的錯誤:

C:\Users\Daniel> ssh-add C:\Users\Daniel\.ssh\id_ed25519
Error connecting to agent: No such file or directory

有任何想法嗎?

答案1

我發現 Windows10 中的某些功能將 ssh-agent 的路徑設為 env-var,但無法處理資料夾名稱中的空格。有人忘記轉義他們的輸入! (啊啊啊啊啊啊!)。

測試:(在我目前正在使用的 git-bash 中)

echo "$(ssh-agent)"

……給出了您的環境已設定的內容(在我的情況下:愚蠢地),以了解它將如何找到/訪問 ssh-agent。我有:

SSH_AUTH_SOCK=/d/Windows10 Temporary Files/ssh-XXXXXXX/agent.YYYYY; export SSH_AUTH_SOCK;
SSH_AGENT_PID=54456; export SSH_AGENT_PID;
echo Agent pid 54456;

....哦,看!有人忘記了資料夾可以有空格,並且沒有費心轉義他們的輸入(第一行已損壞,它包括“導出”命令)。

正確地重新匯出該環境變數(用單引號將“/d/...YYYY”括起來,刪除結尾的“;”,並刪除“export SSH_AUTH_SOCK;”部分)會導致 ssh-agent 再次正常工作。

相關內容