🏃

WSL2からWindowsのGit Credential Managerを使って認証する

に公開

はじめに

GitHub 認証に Personal Access Token を使用していたが、WSL2 において GitHub へのpush時に毎回トークンの入力を強制されるのが面倒なので GitHub が推奨している Git Credential Manager(以下「GCM」と呼ぶ)に移行してみました。

Windows にインストールされた GCM を用いた WSL2 側の認証方法を記載しますが、GCM 自体は Git インストール時のオプションで特に指定していなければデフォルトで導入されているはずです。
私の環境では Windows に Scoop 経由で両方インストールされていたが、それに気付かず試行錯誤したのでその辺も含めて記載します。
結論から見たい人は飛ばしてください。

環境

  • Win11 WSL2 Ubuntu 24.04
  • Scoop

WindowsにインストールされたGCMの場所を特定する

まず GCM の実行ファイルがどこにあるのか探します。
私の場合は GCM を自分がインストールしているのかどうか、どこにあるのかが分からなかったので以下のコマンド群を試しました。
すべて Windows 側での操作です。

Git の認証情報管理に何が使われているのか、credential.helper の設定を確認します。
GCM がインストールされていれば、パスが戻り値として表示されるはずです。

# マシン全体に適用されているcredential.helper設定を確認
git config --system credential.helper
=> "C:/Users/user/scoop/apps/git/2.48.1/mingw64/bin/git-credential-manager.exe"

もし何も表示されない場合は、以下のコマンドも試してみてください。

# ログインユーザーに適用されているcredential.helper設定を確認
git config --global credential.helper

# 全ての設定値をリストアップして、どのファイルに記載されているか確認
git config --list --show-origin

GCMのパスをWSL2側で設定する

上記で見つかったパスを、WSL2 側で以下のように設定すれば完了。

git config --global credential.helper "見つかったパス"

Scoop 経由でインストールしている場合は、Git のバージョンを示したディレクトリを current に変更してください。
current はシンボリックリンクなので Git をアップデートしても、常に使用している Git バージョンの GCM が適用されます。

# 変更前
git config --global credential.helper "/mnt/c/Users/user/scoop/apps/git/2.48.1/mingw64/bin/git-credential-manager.exe"

# 変更後
git config --global credential.helper "/mnt/c/Users/user/scoop/apps/git/current/mingw64/bin/git-credential-manager.exe"

Discussion