WSL2におけるSSHでのGit/GitHubの認証設定
私は、都合上Windowsユーザーなので、Linux環境が使いたいときはWSL2を使用してきました。
以下のリンクにあるように、WSL2環境下において、公式では認証に際してGithubCredentialManager(GCM)を推奨しています。
以下、Github Credential ManagerをCGMと略して記述します。
最終的に、この記事では、WSL2環境下でSSHを用いてGit/Githubの認証ができるようになることを目的とします。
今回は以下の環境で実験をしています。予めご了承ください。
- Windows11 Home
- WSL2: Ubuntu 22.04 LTS
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION="Ubuntu 22.04.4 LTS"
GCMの設定削除
GCMを使用するように設定していた場合、~/.gitconfig
の中身に以下のような記述を見つけることができるでしょう。
これは、GCMを使用するために必要ですが、今回はSSH接続を使うので、不要です。
[credential]
helper = /mnt/c/Program\\ Files/Git/mingw64/bin/git-credential-manager-core.exe
以下のコマンドを実行し、credential.helperの設定を消しましょう。
$ git config --global --unset credential.helper
上のコマンドを実行すると、~/.gitconfig
の中身から先程の記述が消えると思います。
消えていない場合は、先に進めないので、~/.gitconfig
を直接編集して消してください。
鍵の生成
以下の記事の通りに進めれば生成できます。
リンクが切れた時のため、本稿にも手順を記載します。
~/.ssh
ディレクトリに移動し、SSHキーを生成します。
$ cd ~/.ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):id_git_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
基本的にはEnterキーを押していれば問題ありませんが、
今回は個人的に鍵が保存されるファイル名を指定したかったので、一回目の選択肢でid_git_rsa
と入力しています。
公開鍵をGitHubに登録
以下のリンクは、GithubのSSHキー登録ページです。アクセスしてください。
- 画面右上の「New SSH key」のボタンを押します。
- 各種情報を入力します。
- 「Title」には、任意の名前をつけましょう。本当になんでもかまいません。本稿では
WSL2_Ubuntu2204
等とつけました。 - 「Key Type」は、プルダウンで選択できる項目となっています。「Authentication Key」としましょう。
- 「Key」には、先ほど作成した、鍵である
~/.ssh/id_git_rsa.pub
の中身をコピーして貼り付けます。
- 「Title」には、任意の名前をつけましょう。本当になんでもかまいません。本稿では
コラム(WSL2の標準出力をクリップボードへコピー)
WSL2環境のUbuntu22.04において、Windows11のコマンドが呼び出せます。
したがって、上記公開鍵の登録手順では、clip.exe
を以下の様に呼び出すことで、~/.ssh/id_git_rsa.pub
の内容を素早くクリップボードにコピーできます。
$ cat ~/.ssh/id_git_rsa.pub | clip.exe
SSHエージェント起動
Githubに登録した鍵とSSHを提携させるためにはSSHエージェントを使用する必要があります。
$ eval "$(ssh-agent -s)"
GNOMEデスクトップ環境では、GNOME Keyring等を使用し、マシンの起動時にSSHエージェントを自動で起動させることがあるそうです。
しかし、趣味で開発するならそこまでせずとも、.bashrc
等に追記し、シェルの起動にあわせてSSHエージェントを起動させれば十分でしょう。
先ほど作成した、SSHキーをSSHエージェントに登録します。
$ ssh-add ~/.ssh/id_git_rsa
以上で、SSH接続でのGit/GitHubの設定は完了です。
接続テスト
ssh -T git@github.com
コマンドを実行し、GitHubに接続できるか確認しましょう。
成功例を以下に示します。
$ ssh -T git@github.com
Hi yoshiyuki-140! You've successfully authenticated, but GitHub does not provide shell access.
おわりに
読んで頂いてありがとうございます!
不明点・誤字・脱字・誤謬等ございましたら、コメント欄にてお願いします。
Discussion