Windows の Git 認証 — Credential Manager・SSH・コミット署名
Windows で Git 認証をスムーズに:Git Credential Manager、SSH キー、SSH 署名、マルチアカウント。
Windows の Git 認証は macOS / Linux より少し複雑だ — Git Credential Manager(GCM)、OpenSSH、1Password エージェントが衝突することがある。このガイドは一度きりのクリーンなセットアップで、1 年間触らなくて済む状態を作る。
対象:Windows 11 + Git for Windows + GitHub(Windows 初期セットアップ 完了後)。
TL;DR
- Git Credential Manager(GCM) — HTTPS クローン用 OAuth(ブラウザサインイン)
- OpenSSH キー — SSH クローン用。Ed25519 推奨
- コミット署名 — SSH キーを使用(GPG より簡単)
- 仕事・個人の分離 —
Include.pathまたは~/.ssh/configのホストエイリアス - 1Password SSH エージェント(オプション)— ボルト内にキーを保管
前提条件
- Git for Windows 2.40 以上 —
winget install --id Git.Git(Windows 初期セットアップ) - OpenSSH クライアント有効化済み(Win11 デフォルト)—
Get-WindowsCapability -Online -Name "OpenSSH.Client*"で確認
1. Git Credential Manager — HTTPS
GCM は Git for Windows に同梱されている。HTTPS クローン / プッシュ時にブラウザで OAuth フローが自動起動する:
git clone https://github.com/user/repo.git
# ブラウザが開く → GitHub ログイン → トークンが自動保存される保存場所:Windows Credential Manager(コントロールパネル → ユーザーアカウント → 資格情報マネージャー → Windows 資格情報)。
確認
git config --global credential.helper
# managermanager と表示されれば GCM が有効。そうでない場合:
git config --global credential.helper managerマルチアカウント(仕事 + 個人 GitHub)
URL ごとに異なるヘルパーを設定:
git config --global --add credential.https://github.com.useHttpPath true同一ホスト上のパスごとに資格情報が分かれる。
2. SSH キー
SSH は HTTPS よりスムーズ(ブラウザ不要)。Ed25519 キーを生成する:
ssh-keygen -t ed25519 -C "you@example.com"
# パス:~/.ssh/id_ed25519(デフォルト)
# パスフレーズ:推奨(1Password エージェントが自動ロック解除)公開鍵を表示:
Get-Content ~/.ssh/id_ed25519.pub
# ssh-ed25519 AAAA... you@example.comGitHub → Settings → SSH and GPG keys → New SSH key → 公開鍵を貼り付ける。
ssh-agent の有効化(パスフレーズの自動ロック解除)
# 管理者 PowerShell
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
# 通常の PowerShell
ssh-add ~/.ssh/id_ed25519
# 初回のみパスフレーズ入力;以降は自動SSH の確認
ssh -T git@github.com
# Hi yourname! You've successfully authenticated, but GitHub does not provide shell access.リモート URL の切り替え(HTTPS → SSH)
git remote set-url origin git@github.com:user/repo.git3. SSH によるコミット署名
GPG より簡単で同じキーを再利用できる。Git 2.34 以上が必要。
git config --global gpg.format ssh
git config --global user.signingkey "ssh-ed25519 AAAA... you@example.com"
git config --global commit.gpgsign true
git config --global tag.gpgsign trueuser.signingkey には公開鍵の行全体を指定する。ファイル参照も可能:
git config --global user.signingkey "C:/Users/me/.ssh/id_ed25519.pub"GitHub への署名キー登録
GitHub → SSH and GPG keys → Add new SSH key → キータイプを Signing Key にして同じ公開鍵を登録する。
テスト
git commit --allow-empty -m "test signed"
git log --show-signature -1
# Good "git" signature with ED25519 key SHA256:...PR ページで「Verified」バッジを確認する。
allowed_signers ファイル(ローカル検証に必要)
~/.config/git/allowed_signers:
you@example.com ssh-ed25519 AAAA...
coworker@example.com ssh-ed25519 BBBB...
git config --global gpg.ssh.allowedSignersFile "$HOME/.config/git/allowed_signers"git log --show-signature で他メンバーのコミットも検証できるようになる。
4. GitHub マルチアカウント(仕事 + 個人)
4.1 SSH config — ホストエイリアス
~/.ssh/config:
Host github.com-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes
Host github.com-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes
クローン:
git clone git@github.com-personal:personal-user/repo.git
git clone git@github.com-work:company/repo.git4.2 フォルダごとの user.email — includeIf
~/.gitconfig:
[user]
name = Your Name
email = personal@example.com
[includeIf "gitdir:C:/Users/me/work/"]
path = C:/Users/me/.gitconfig-work~/.gitconfig-work:
[user]
email = me@company.com
signingkey = ssh-ed25519 AAAA... me@company.comC:/Users/me/work/ 以下のリポジトリでは仕事用のメール / キーが自動的に使われる。
確認:
cd C:\Users\me\work\some-repo
git config user.email
# me@company.com
cd C:\Users\me\personal\some-repo
git config user.email
# personal@example.com5. 1Password SSH エージェント(オプション)
パスワードマネージャー を参照。Windows では環境変数でエージェントソケットを設定する:
- 1Password デスクトップ → Settings → Developer → 「Use the SSH agent」✅
- SSH キーを 1Password ボルトに保存 + GitHub に登録
- PowerShell
$PROFILE:$env:SSH_AUTH_SOCK = '\\.\pipe\openssh-ssh-agent' - 新しいターミナル →
ssh -T git@github.com→ Windows Hello を 1 度
これで SSH とコミット署名がディスク上の ~/.ssh/id_* プレーンテキストなしで動作する。
6. 検証
ssh -T git@github.com— 認証 OKgit clone git@github.com:you/repo.git— パスフレーズ不要(または生体認証 1 回)git commit --allow-empty -m test && git log --show-signature -1— 「Good signature」- GitHub の PR に「Verified」バッジが表示される
- 仕事・個人フォルダで
git config user.emailの値が異なる
トラブルシューティング
ssh: connect to host github.com port 22: Connection timed out
社内ファイアウォールがポート 22 をブロックしている。SSH over 443 を使う:
# ~/.ssh/config
Host github.com
HostName ssh.github.com
Port 443
Permission denied (publickey)
- キーファイルのパーミッション —
icacls ~/.ssh/id_ed25519 /inheritance:r /grant:r "$($env:USERNAME):(R)" - 公開鍵が GitHub に登録されていない
GCM が無効
git config --global credential.helper manager
git config --global credential.helperSelector prompt1Password SSH エージェントが検出されない
- デスクトップアプリが起動・サインイン済みで Developer オプションが ON
SSH_AUTH_SOCKの正確な値(\\.\pipe\openssh-ssh-agent)- 競合:OpenSSH エージェントサービスが起動していると、そちらのソケットが優先される。
Stop-Service ssh-agentまたは無効化
コミット署名が「Unverified」になる
- SSH キーを GitHub の signing key として登録する(認証キーとは別)
git config --global gpg.format sshが未設定- キーが破損 — 再生成 + 再登録
includeIf が効かない
- Git 2.36 以上が必要(旧バージョンの Git for Windows はサポートなし)
- gitdir パスは末尾に
/が必要(C:/Users/me/work/) - Windows でも
\ではなく/を使う
参考リンク
- Windows 初期セットアップ — Git for Windows の事前インストール
- パスワードマネージャー — 1Password SSH エージェント統合
- クロス OS dotfiles — chezmoi で両マシン同じ Git 設定
- GCM(公式)
更新履歴
- 2026-05-12:初稿。GCM + SSH キー + SSH 署名 + マルチアカウント + 1Password エージェント + 6 つのトラブルシューティング。