WSL(Ubuntu)からGitHubへSSH接続できないとき

WindowsでWSLを使って開発環境を準備したぞ!(こちら)
さぁ、GitHubでrepositoryを作るか!と思っていた矢先に躓いたのでメモ。

SSHキーの作成と接続確認

ssh-keygen -t ed25519 -C "<mail address>"

と、コマンドを実行、鍵を作成し、

cat ~/.ssh/id_ed25519.pub

表示された公開鍵をGitHubに登録したのに以下のコマンドで反応がない。。。

ssh -T git@github.com
The authenticity of host 'github.com (13.114.40.48)' can't be established.
ECDSA key fingerprint is SHA256:<ランダム文字列>
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,13.114.40.48' (ECDSA) to the list of known hosts.

上記の「yes」を入力後反応がない。。。

SSHのログを出す

SSH接続で困ったときは以下を試せと。。。

ssh -T git@github.com -vvv

長いのでかなり略しますが、以下でしばらく止まって、そのまま待つとログがちょろちょろと出てきますが、成功はしないような結果になります。

OpenSSH_8.2p1 Ubuntu-4ubuntu0.4, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
~~ 中略 ~~~
debug3: Ignored env ASDF_DIR
debug3: Ignored env LESSOPEN
debug3: Ignored env USER
debug3: Ignored env VSCODE_GIT_IPC_HANDLE
debug3: Ignored env SHLVL
debug3: Ignored env WSLENV
debug3: Ignored env VSCODE_GIT_ASKPASS_MAIN
debug3: Ignored env XDG_DATA_DIRS
debug3: Ignored env PATH
debug3: Ignored env HOSTTYPE
debug3: Ignored env OLDPWD
debug3: Ignored env TERM_PROGRAM
debug3: Ignored env VSCODE_IPC_HOOK_CLI
debug3: Ignored env _
debug2: channel 0: request shell confirm 1
debug3: send packet: type 98
debug2: channel_input_open_confirmation: channel 0: callback done
debug2: channel 0: open confirm rwindow 32000 rmax 35000

止めるには「Ctrl+c」

SSHのConfigを修正

WSLのルーター機能?がうまく処理できない?といったことが原因らしい。
SSHのConfigを設定すると改善します。

以下を順に実行するとレスポンスが返ってくるはずです。

ssh -T git@github.com -vvv -o ProxyCommand='nc %h %p'
ssh -T git@github.com -vvv -o IPQoS=0

次はconfigを修正します。

vi ~/.ssh/config

「Insert」キー(もしくは「i」キー)入力後に以下をペースト

Host *
  IPQoS=0x00

終われば「Esc」キーを1回押した後、「wq」でEnter。

これで、以下を実行すると成功したログが返ってきます。

ssh -T git@github.com
Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.

参考: https://github.com/microsoft/WSL/issues/7058

[おまけ] Could not open a connection to your authentication agent.の対処

上の結論にたどり着く前に試したこと。
ただ、今回は、全く関係がなかった・・・けど、どこかで踏みそうな問題なので解決方法を残しておきます。

sshのキーの登録がどうなっているか確認

ssh-add -l
Could not open a connection to your authentication agent.

agentの準備ができていない。。。ということらしい。

Windowsの場合、

eval `ssh-agent`

が必要とのこと。