WSL(Ubuntu)からGitHubへSSH接続できないとき
WindowsでWSLを使って開発環境を準備したぞ!(こちら)
さぁ、GitHubでrepositoryを作るか!と思っていた矢先に躓いたのでメモ。
Contents
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`
が必要とのこと。