エージェントが実行中であるにもかかわらず、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 へのパスを環境変数として設定しているものの、フォルダー名内のスペースを処理できないことがわかりました。誰かが入力をエスケープするのを忘れたようです! (AAAAAAAAARRRRGGGGGH!)。

テストするには: (現在使用している 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 が再び正常に動作するようになります。

関連情報