本文へ移動
Home

2026.08.20

GitHubと連携

8/18の記事で、Next.jsを使ってWebサイトを作るための勉強方法について解説した。 そこでGitHubへの連携についても触れたが、今回はSSHを使った連携の詳細について書いておこう。

1. なぜ SSH を使うのか

1.1 GitHub への認証方法は 3 つある

方法リモート URL の形認証に使うもの
HTTPS + パスワードhttps://github.com/user/repo.git2021年に廃止済み
HTTPS + アクセストークンhttps://github.com/user/repo.gitPersonal Access Token
SSHgit@github.com:user/repo.git秘密鍵ファイル

1.2 SSH の利点

観点SSH
認証情報の表示git remote -v に出ない
保存場所~/.ssh/ にファイル権限 600 で保護
失効の単位マシン単位。ノート PC を紛失したらその鍵だけ消せばよい
有効期限なし(トークンのように切れて慌てることがない)
入力の手間初回設定後はゼロ

2. しくみ — 公開鍵暗号の 3 分解説

鍵は必ずペアで存在する。公開鍵と秘密鍵だ。

ファイル名置き場所公開してよいか
公開鍵 (public key)id_ed25519.pubGitHub に登録してよい
秘密鍵 (private key)id_ed25519自分のマシンだけ絶対にダメ

.pub が付くほうが公開鍵、付かないほうが秘密鍵だ。

2.1 認証の流れ

SSHの認証の流れ
SSHの認証の流れ

秘密鍵は一度もネットワークに出ない。 「秘密鍵を持っている人にしか作れない署名」を送るだけだ。 だから公開鍵は誰に見せても安全というわけだ。

2.2 鍵の種類 -ed25519 を選ぶ

種類評価
ed25519✅ これを使う。 短く・速く・強い。GitHub 推奨
RSA (4096bit)古い環境向け。長い
RSA (1024bit) / DSA❌ 危殆化済み。使わない

3. セットアップ手順

3.1 既存の鍵を確認する

作る前に、鍵をすでに持っていないか確認しておこう。

shell
ls -la ~/.ssh

id_ed25519 と id_ed25519.pub があれば既存の鍵が使えるぞ。 No such file or directory なら次へ進もう。

3.2 鍵を作る

shell
mkdir -p ~/.ssh && chmod 700 ~/.ssh

ssh-keygen -t ed25519 -C "自分@マシン名"

オプションの意味:

オプション意味
-t ed25519鍵の種類
-C "..."コメント。どのマシンの鍵かを書くと後で失効させやすい

対話で3つ聞かれる。

text
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 保存後は不要)
おすすめ個人マシンなら許容より安全。推奨

後から追加・変更もできる。

shell
ssh-keygen -p -f ~/.ssh/id_ed25519

3.4 ssh-agent に登録する

ssh-agentは、鍵を預かっておいてくれる常駐プログラムだ。 パスフレーズを毎回打たずに済む。

shell
# agentが動いているか確認(macOSでは通常自動起動)
ssh-add -l

# 鍵を登録(パスフレーズはmacOSのKeychainに保存される)
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

3.5 ~/.ssh/config を書く

毎回のオプション指定をするのは面倒なので、それを省くための設定ファイルを書いておこう。

shell
touch ~/.ssh/config && chmod 600 ~/.ssh/config

エディタで開いて、以下を追記する(既存の設定は消さないこと)。

text
Host github.com
  HostName github.com
  User git
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

各行の意味:

設定意味
Host github.com以下は github.com への接続に適用する
User gitGitHub の SSH は必ず git ユーザー。自分の ID ではない
AddKeysToAgent yes使った鍵を自動で agent に登録する
UseKeychain yesパスフレーズを macOS の Keychain から読む(macOS 専用)
IdentityFile使う秘密鍵。.pub ではないほうを指定

3.6 公開鍵をGitHubに登録する

まず公開鍵(.pubのほう)を表示してコピーする。

shell
cat ~/.ssh/id_ed25519.pub

# クリップボードに直接コピーする場合
pbcopy < ~/.ssh/id_ed25519.pub

こんな1行が出るはずだ。

text
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... shohei@MacBook
  1. https://github.com/settings/keys を開く
  2. New SSH key をクリック
  3. Title: マシン名など識別できる名前(例: MacBook Pro 2024)
  4. Key type: Authentication Key のまま
  5. Key: コピーした 1 行をペースト
  6. Add SSH key

3.7 接続テスト

shell
ssh -T git@github.com

初回はこのように聞かれるかもしれない。

text
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。 成功すると、以下のようなメッセージが出る。

text
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