スタートアップCTOによるITエンジニアのためのブログ

WSL2でGitをインストールしてGitHubと認証する方法

本記事では、Windows Subsystem for Linux 2(WSL2)環境にGitをインストールし、GitHubに認証してリポジトリ操作をできるようにするまでの手順を解説します。また、混同されがちなGit for Windowsとの違いも説明します。

前提

  • Windows 11
  • WSL2とデフォルトディストリビューション(Ubuntu等)をインストール済み

もしWSL2が未設定の場合、関連記事の「WSL2のWindows11へのインストール、起動とシャットダウン」をご参照ください。

Gitのインストール

最新のUbuntuであれば既にGitがインストール済みの場合が多いですが、以下のコマンドで確認します。

git --version

バージョンが表示されない場合は、以下のコマンドでパッケージリストを更新してからインストールします。

sudo apt update
sudo apt install git -y

Gitのグローバル設定

コミット時に記録されるユーザー名とメールアドレスを登録します。

git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"

GitHub認証の選択肢

GitHubリポジトリへのアクセスには、主に「SSH」と「HTTPS」の2つの方式があります。

方式特徴推奨されるケース
SSH秘密鍵・公開鍵ペアを使用。一度設定すればセキュアで高速。Linux環境に慣れている場合、サーバー連携する場合。
HTTPSGit Credential Manager (GCM) を使用。Windows側の認証情報を共有。ブラウザ認証(Webログイン)で手軽に済ませたい場合。

SSH認証の設定

WSL上でSSH鍵を作成します。セキュリティ強度の高い Ed25519 形式を推奨します。

cd ~
ssh-keygen -t ed25519 -C "your_email@example.com"

※保存先はデフォルト(Enterキー)で進め、パスフレーズを設定してください。

ssh-agentへの登録

SSH使用時にパスフレーズ入力を省略するため、ssh-agent を利用します。~/.bashrc(または ~/.zshrc)の末尾に以下の設定を追記します。

# ~/.bashrc への追記例
if [ -z "$SSH_AUTH_SOCK" ]; then
    eval "$(ssh-agent -s)" > /dev/null
fi
if ! ssh-add -l > /dev/null 2>&1; then
    ssh-add ~/.ssh/id_ed25519
fi

GitHubに公開鍵を追加

GitHubにログインし、右上のアカウントメニューからSettingsをクリックします。

GitHub Settingsメニュー

「SSH and GPG keys」メニューを選択し、「New SSH key」ボタンをクリックします。

GitHub SSH key追加メニュー

WSL上で以下のコマンドを実行し、Windowsのクリップボードに公開鍵を貼り付けます。

cat ~/.ssh/id_ed25519.pub | clip.exe

Titleにわかりやすい公開鍵の名前を入力(例:WSL Ubuntu 24.04)、Keyにコピーした公開鍵を貼り付け、「Add SSH key」ボタンをクリックして保存します。

GitHubにSSH公開鍵を追加

接続確認:

ssh -T git@github.com

Hi username! You've successfully authenticated... と表示されれば成功です。

これでGitHubとSSHで認証できるようになったので、ご自身のGitHubレポジトリをWSL上でgit cloneしてみてください。

git clone git@github.com:username/repository.git

GitHubでの新規レポジトリ作成

レポジトリを未作成の場合、GitHubで新規レポジトリを作成します。

GitHubの上部メニューの「+」アイコンのドロップダウンから「New Repository」をクリックします。

GitHub New repositoryメニュー

レポジトリ名を入力し、「Create repository」をクリックしてレポジトリを作成します。

GitHubで新規レポジトリ作成

表示されたSSH用のURLをコピーします。

GitHubレポジトリのSSH URLをコピー

WSL上でgit cloneし、レポジトリがWSL上に作成されれば成功です。

git clone git@github.com:username/wsl-git-test.git
ls -a wsl-git-test/ # 出力例:. .. .git

git cloneが失敗する場合

WSLでgit cloneを実行すると、以下のようなエラーが表示される場合です。

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

原因1. 秘密鍵のパスフレーズが間違っている。

SSHエージェントにSSH秘密鍵を登録していない場合、git cloneの際に設定したパスフレーズを入力する必要がありますが、入力値が間違っていると秘密鍵を複合できずエラーになります。

原因2. ~/.sshディレクト内のファイル権限が間違っている。

~/.sshディレクトリ及びディレクトリ内の各ファイルの権限が、以下のように適切に設定されているか確認します。

  • ~/.ssh: 700 (drwx——)
  • ~/.ssh/id_ed25519: 600 (-rw——-)
  • ~/.ssh/id_ed25519.pub: 644 (-rw-r–r–)
  • ~/.ssh/known_hosts: 600 (-rw——-)

原因3. GitHubのSSH設定

GitHubに公開鍵が追加されていないか、値が間違って設定されている可能性があります。GitHubのSSH設定で鍵が登録されているか確認し、されている場合は一度削除してから再度追加します。

Git Credential Manager認証(HTTPS経由)

WSL2からGitHubへHTTPS経由でアクセスする場合、認証方法(パスワードの代わり)として 「アクセストークン(PAT)」 を毎回入力する必要があります(パスワード認証は現在廃止)。この入力を省略するために、認証情報を安全に保存してくれるのが Git Credential Manager (GCM) です。

WSL2からWindows側のGit Credential Manager を呼び出すことで、ブラウザログインによる認証が可能になります。

Git Credential Managerのインストール

Git Credential Managerは、「Git for Windows」のコンポーネントとして提供されています。

そのため、まずはGit for Windowsを公式サイトからダウンロードします。

Git for Windowsを公式サイトでダウンロード

インストーラを起動すると設定画面がいくつも続きますが、すべてデフォルト設定のままNextを押してインストールを完了します。

Git for Windowsインストーラ

PowerShellでGit for Windowsの以下のコマンドを実行します。WSL上にインストールしたGitのコマンドではないことにご注意ください。

git --version; git credential-manager --version

以下のようにバージョン情報が表示されたら無事にインストールされています。

git version 2.53.0.windows.2
2.7.3+5fa7116896c82164996a609accd1c5ad90fe730a

WSLを立ち上げ、以下のコマンドを実行します。

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe"

認証の流れ

HTTPS形式のURLで git clonepush を行うと、Windows側でログイン画面がポップアップします。

GitHubのレポジトリをHTTPS形式でWSL上でgit cloneします。

git clone https://github.com/username/wsl-git-test.git
GitHubレポジトリのhttps URLをコピー

プライベートリポジトリならこの段階でGit Credential Managerが立ち上がります。

もしパブリックレポジトリの場合は、続いてgit pushします。

cd wsl-git-test/
git push

Git Credential Managerが立ち上がりますので、「Sign in with your browser」を選択します。

Git Credential ManagerでGitHubログイン

WindowsのデフォルトブラウザでGitHub認証画面に遷移するので、ログインして「Authorize git-ecosystem」ボタンをクリックします。

Git Credential ManagerをGithubで認証

認証完了画面が表示され、WSL上でgit cloneまたはgit pushが成功します。

GitHubでのGit Credential Managerの認証完了

以降の認証は自動化されます。

Git for Windowsとの違い

「WSL上のGit」と「Git for Windows」は、動作するOS環境が異なります。

Git for WindowsにはGit Credential Managerの他、以下のツールが含まれていrます。

  • Git CMD: WidnowsターミナルでGitを使う
  • Git GUI: Windows GUIアプリでGitを操作
  • Git Bash: WindowsでBashエミュレータ(mintty)を動かす

これらのツールはいずれも、Windows上でGitを操作するためのツールです。WSL上でGitを操作するためのものではないので、混同しないようにしましょう。

WSL上のGitGit for Windows
実行環境Linux(Ubuntu等)Windows
ファイルシステム/home/user/…C:\Users\Name…
用途Linuxベースの開発、Docker利用Windowsアプリ開発、GUI操作

注意点: WSL環境では、基本的に「WSL上のGit」を使用してください。Windows側のGit(git.exe)をWSLから呼び出すと、パーミッションの問題やパフォーマンス低下の原因になります。

Git Bashの画面

Git Bash

まとめ

  • 最新のUbuntuなら、Gitは最初から入っているか apt で簡単に導入可能。
  • SSH方式は一度設定すれば鍵交換だけで済むため、開発者にとって最も一般的。
  • GCM方式はWindowsの認証機能を共有できるため、初心者でも扱いやすい。

自分の開発スタイルに合った認証方法を選んで、快適なGitHubライフを送りましょう。