🐡

ssh-agentの鍵が使われない

2023/02/22に公開

問題

ローカルの鍵を使ってリモートからsshしたい.

ssn-agentの転送設定や鍵の登録を済ませた.
しかしagentは転送されているがsshしようとすると鍵を使えない.

user@remote:~$ ssh-add -l
256 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx user@local (ED25519)

user@remote:~$ ssh -vvvv git@github.com
...
debug2: get_agent_identities: ssh_agent_bind_hostkey: communication with agent failed
debug1: get_agent_identities: ssh_fetch_identitylist: communication with agent failed
...

環境

local: Windows11 + PowerShell7.3.2 + OpenSSH8.1p1
remote: ubuntu22.04.1 + OpenSSH8.9p1

解決

localのOpenSSHのバージョンを上げる.
stackoverflow に書いてあった.

原因?

OpenSSH8.9でssh-agentに手が入ったらしい.
セキュリティ的な制限らしい.
Protocol extensions are required って書いてあるけど後方互換性が無いなんてことあるんだろうか?

手順

  1. 古いOpenSSHを削除(なぜかコマンドラインでは削除できなかった)
    Windowsの設定/アプリ/オプション機能/OpenSSH クライアントでアンインストール
  2. (必要なら再起動)
  3. 新しいOpenSSH(ベータ)をインストール
    管理者権限のPowerShellでwinget install Microsoft.OpenSSH.Beta --override ADDLOCAL=Client

別のPowershellでssh -Vしてバージョンが上がっていれば完了
(同じウィンドウだとsshを見つけてくれなかった)

確認

remoteにagentが転送されていることを確認したうえでsshする.

user@remote:~$ ssh-add -l
256 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx user@local (ED25519)

user@remote:~$ ssh git@github.com
PTY allocation request failed on channel 0
Hi user! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

感想

WindowsUpdateで対応してほしい...

Discussion