🐈

WSL2におけるSSHでのGit/GitHubの認証設定

2024/08/11に公開

私は、都合上Windowsユーザーなので、Linux環境が使いたいときはWSL2を使用してきました。
以下のリンクにあるように、WSL2環境下において、公式では認証に際してGithubCredentialManager(GCM)を推奨しています。

以下、Github Credential ManagerをCGMと略して記述します。

https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-git
私も今までは、GCMを使用していましたが、特定環境下でなぜかpushできなかったりしてややこしいので、シンプルなSSHに変更することにしました。
最終的に、この記事では、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を直接編集して消してください。

鍵の生成

以下の記事の通りに進めれば生成できます。
https://qiita.com/shizuma/items/2b2f873a0034839e47ce

リンクが切れた時のため、本稿にも手順を記載します。

~/.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キー登録ページです。アクセスしてください。
https://github.com/settings/ssh

  1. 画面右上の「New SSH key」のボタンを押します。
  2. 各種情報を入力します。
    • 「Title」には、任意の名前をつけましょう。本当になんでもかまいません。本稿ではWSL2_Ubuntu2204等とつけました。
    • 「Key Type」は、プルダウンで選択できる項目となっています。「Authentication Key」としましょう。
    • 「Key」には、先ほど作成した、鍵である~/.ssh/id_git_rsa.pubの中身をコピーして貼り付けます。
コラム(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