2026.08.20
GitHubと連携
8/18の記事で、Next.jsを使ってWebサイトを作るための勉強方法について解説した。 そこでGitHubへの連携についても触れたが、今回はSSHを使った連携の詳細について書いておこう。
1. なぜ SSH を使うのか
1.1 GitHub への認証方法は 3 つある
| 方法 | リモート URL の形 | 認証に使うもの |
|---|---|---|
| HTTPS + パスワード | https://github.com/user/repo.git | 2021年に廃止済み |
| HTTPS + アクセストークン | https://github.com/user/repo.git | Personal Access Token |
| SSH | git@github.com:user/repo.git | 秘密鍵ファイル |
1.2 SSH の利点
| 観点 | SSH |
|---|---|
| 認証情報の表示 | git remote -v に出ない |
| 保存場所 | ~/.ssh/ にファイル権限 600 で保護 |
| 失効の単位 | マシン単位。ノート PC を紛失したらその鍵だけ消せばよい |
| 有効期限 | なし(トークンのように切れて慌てることがない) |
| 入力の手間 | 初回設定後はゼロ |
2. しくみ — 公開鍵暗号の 3 分解説
鍵は必ずペアで存在する。公開鍵と秘密鍵だ。
| 鍵 | ファイル名 | 置き場所 | 公開してよいか |
|---|---|---|---|
| 公開鍵 (public key) | id_ed25519.pub | GitHub に登録 | してよい |
| 秘密鍵 (private key) | id_ed25519 | 自分のマシンだけ | 絶対にダメ |
.pub が付くほうが公開鍵、付かないほうが秘密鍵だ。
2.1 認証の流れ

秘密鍵は一度もネットワークに出ない。 「秘密鍵を持っている人にしか作れない署名」を送るだけだ。 だから公開鍵は誰に見せても安全というわけだ。
2.2 鍵の種類 -ed25519 を選ぶ
| 種類 | 評価 |
|---|---|
| ed25519 | ✅ これを使う。 短く・速く・強い。GitHub 推奨 |
| RSA (4096bit) | 古い環境向け。長い |
| RSA (1024bit) / DSA | ❌ 危殆化済み。使わない |
3. セットアップ手順
3.1 既存の鍵を確認する
作る前に、鍵をすでに持っていないか確認しておこう。
ls -la ~/.sshid_ed25519 と id_ed25519.pub があれば既存の鍵が使えるぞ。 No such file or directory なら次へ進もう。
3.2 鍵を作る
mkdir -p ~/.ssh && chmod 700 ~/.ssh
ssh-keygen -t ed25519 -C "自分@マシン名"オプションの意味:
| オプション | 意味 |
|---|---|
| -t ed25519 | 鍵の種類 |
| -C "..." | コメント。どのマシンの鍵かを書くと後で失効させやすい |
対話で3つ聞かれる。
Enter file in which to save the key (/Users/you/.ssh/id_ed25519):
→ そのまま Enter(既定の場所でよい)
Enter passphrase (empty for no passphrase):
→ 後述。空 Enter でも可
Enter same passphrase again:
→ 同じものをもう一度3.3 パスフレーズを付けるべきか
| パスフレーズなし | パスフレーズあり | |
|---|---|---|
| 秘密鍵ファイルが盗まれたら | 即座に悪用される | パスフレーズがないと使えない |
| 使うたびの入力 | 不要 | 初回のみ(Keychain 保存後は不要) |
| おすすめ | 個人マシンなら許容 | より安全。推奨 |
後から追加・変更もできる。
ssh-keygen -p -f ~/.ssh/id_ed255193.4 ssh-agent に登録する
ssh-agentは、鍵を預かっておいてくれる常駐プログラムだ。 パスフレーズを毎回打たずに済む。
# agentが動いているか確認(macOSでは通常自動起動)
ssh-add -l
# 鍵を登録(パスフレーズはmacOSのKeychainに保存される)
ssh-add --apple-use-keychain ~/.ssh/id_ed255193.5 ~/.ssh/config を書く
毎回のオプション指定をするのは面倒なので、それを省くための設定ファイルを書いておこう。
touch ~/.ssh/config && chmod 600 ~/.ssh/configエディタで開いて、以下を追記する(既存の設定は消さないこと)。
Host github.com
HostName github.com
User git
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519各行の意味:
| 設定 | 意味 |
|---|---|
| Host github.com | 以下は github.com への接続に適用する |
| User git | GitHub の SSH は必ず git ユーザー。自分の ID ではない |
| AddKeysToAgent yes | 使った鍵を自動で agent に登録する |
| UseKeychain yes | パスフレーズを macOS の Keychain から読む(macOS 専用) |
| IdentityFile | 使う秘密鍵。.pub ではないほうを指定 |
3.6 公開鍵をGitHubに登録する
まず公開鍵(.pubのほう)を表示してコピーする。
cat ~/.ssh/id_ed25519.pub
# クリップボードに直接コピーする場合
pbcopy < ~/.ssh/id_ed25519.pubこんな1行が出るはずだ。
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... shohei@MacBook- https://github.com/settings/keys を開く
- New SSH key をクリック
- Title: マシン名など識別できる名前(例: MacBook Pro 2024)
- Key type: Authentication Key のまま
- Key: コピーした 1 行をペースト
- Add SSH key
3.7 接続テスト
ssh -T git@github.com初回はこのように聞かれるかもしれない。
The authenticity of host 'github.com' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?その場合はyesと入力して Enter。 成功すると、以下のようなメッセージが出る。
Hi ユーザー名! You've successfully authenticated, but GitHub does not provide shell access.4. おつかれさまでした。
以上でGitHubとのSSH連携の設定は完了だ。 筆者はこれまで認証まわりはHTTPS + Personal Access Token でやっていたが、 SSHのほうが安全で便利ということなので、今後はSSHを活用していこうと思う。
以下の公式ドキュメントも参考にしてほしい。
https://docs.github.com/ja/authentication/connecting-to-github-with-ssh