パスワードなしで安全に GitHub を操作できる SSH 鍵認証のセットアップガイド。
鍵の作成から GitHub への登録・接続確認まで丁寧に解説します。
SSH(Secure Shell) は暗号化された通信プロトコルです。GitHub との通信に SSH を使うことで、毎回パスワードを入力しなくても安全に認証できます。
SSH 鍵は 秘密鍵 と 公開鍵 のペアで構成されます。
id_ed25519):自分のパソコンだけに保管。絶対に人に見せないid_ed25519.pub):GitHub などのサービスに登録するGitHub に接続するとき、秘密鍵と公開鍵のペアが一致するかを確認して認証が完了します。パスワードを送ることなく、安全にログインできます。
GitHub のリポジトリには HTTPS と SSH の 2 種類の接続方法があります。HTTPS は毎回認証情報が必要(credential helper で解決可能)ですが、SSH は一度設定すれば以後パスワード不要です。
# Ed25519 アルゴリズムで SSH 鍵を作成(推奨)
ssh-keygen -t ed25519 -C "your-email@example.com"
実行すると対話式で設定します。
Enter file in which to save the key (C:\Users\yourname/.ssh/id_ed25519):
→ そのまま Enter(デフォルトの場所に保存)
Enter passphrase (empty for no passphrase):
→ パスフレーズを設定(空でも OK。設定すると鍵使用時に入力が必要)
Enter same passphrase again:
→ 同じパスフレーズを再入力
Your identification has been saved in C:\Users\yourname/.ssh/id_ed25519
Your public key has been saved in C:\Users\yourname/.ssh/id_ed25519.pub
# Ed25519 アルゴリズムで SSH 鍵を作成(推奨)
ssh-keygen -t ed25519 -C "your-email@example.com"
Enter file in which to save the key (/Users/yourname/.ssh/id_ed25519):
→ そのまま Enter
Enter passphrase (empty for no passphrase):
→ パスフレーズを入力(推奨)または空のまま Enter
Your identification has been saved in /Users/yourname/.ssh/id_ed25519
Your public key has been saved in /Users/yourname/.ssh/id_ed25519.pub
id_ed25519(秘密鍵)は絶対に他人に渡したり、Git にコミットしたりしないでください。GitHub に登録するのは id_ed25519.pub(公開鍵)のみです。
# Windows
ls ~/.ssh
id_ed25519 ← 秘密鍵(絶対に見せない)
id_ed25519.pub ← 公開鍵(GitHub に登録する)
# 公開鍵の内容を表示
cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... your-email@example.com
ssh-agent は秘密鍵を一時的に記憶してくれるプログラムです。パスフレーズを設定した場合でも、一度入力すればセッション中は省略できます。
# ssh-agent を起動
Start-Service ssh-agent
# 秘密鍵を追加
ssh-add ~/.ssh/id_ed25519
「サービス」→「OpenSSH Authentication Agent」を右クリック→「プロパティ」でスタートアップの種類を「自動」に変更してサービスを開始してください。
# ssh-agent を起動して秘密鍵を追加
eval "$(ssh-agent -s)"
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
# ~/.ssh/config に追記(自動で Keychain を使うように設定)
cat >> ~/.ssh/config << 'EOF'
Host github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
EOF
公開鍵(id_ed25519.pubの内容)を GitHub のアカウント設定に登録します。
# クリップボードにコピー
Get-Content ~/.ssh/id_ed25519.pub | Set-Clipboard
# クリップボードにコピー
pbcopy < ~/.ssh/id_ed25519.pub
MacBook Pro 2024、Windows Work PC)自宅の PC・会社の PC・ノート PC など、複数のデバイスからアクセスする場合はそれぞれの公開鍵を登録してください。
以下のコマンドで GitHub への SSH 接続をテストします。
ssh -T git@github.com
初回は以下のような確認メッセージが表示されます。
The authenticity of host 'github.com (140.82.x.x)' can't be established.
ED25519 key fingerprint is SHA256:+DiY...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
yes と入力して Enter を押します。
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
自分のユーザー名が表示されれば SSH 接続の設定は完了です!
・公開鍵が GitHub に正しく登録されているか確認する
・ssh-add -l で秘密鍵が ssh-agent に登録されているか確認する
・ssh -vT git@github.com で詳細ログを確認する
SSH の設定が完了したら、リポジトリの URL を SSH 形式で使いましょう。
GitHub のリポジトリページで「Code」ボタン → 「SSH」タブを選択すると SSH URL が表示されます。
# SSH 形式の URL(@マークが目印)
git@github.com:username/repository.git
# HTTPS 形式(これは使わない)
https://github.com/username/repository.git
git clone git@github.com:username/repository.git
# 現在のリモート URL を確認
git remote -v
origin https://github.com/username/repository.git (fetch)
origin https://github.com/username/repository.git (push)
# SSH 形式に変更
git remote set-url origin git@github.com:username/repository.git
# 変更後の確認
git remote -v
origin git@github.com:username/repository.git (fetch)
origin git@github.com:username/repository.git (push)
これで GitHub にパスワードなしで安全に接続できます。
Git/GitHub コースで本格的なバージョン管理を学びましょう!