GitHubでのSSH認証設定:セキュアな接続の構築方法

SSH(Secure Shell)接続は、HTTPS接続よりも安全で、パスワードを毎回入力する手間を省けるため、GitHubでの開発において推奨される認証方法です。

1. SSHキーペアの生成

SSH接続には、公開鍵と秘密鍵のペアが必要です。秘密鍵はローカルマシンに安全に保管し、公開鍵をGitHubに登録します。

ターミナルを開き、以下のコマンドのいずれかを実行してキーペアを生成します。"your_email@example.com" の部分は、ご自身のGitHub登録メールアドレスに置き換えてください。

  • Ed25519 (推奨): より新しい、安全で高速なアルゴリズムです。
    ssh-keygen -t ed25519 -C "your_email@example.com"
    
  • RSA (従来の方式):
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

コマンドを実行すると、キーペアの保存場所とパスフレーズの入力を求められます。

  • 保存場所: 特に指定がなければ、デフォルトの場所(~/.ssh/id_ed25519 または ~/.ssh/id_rsa)でEnterを押します。
    > Enter a file in which to save the key (/Users/you/.ssh/id_ed25519): [Press enter]
    
  • パスフレーズ: 秘密鍵を保護するためのパスワードです。セキュリティのため、設定を強く推奨します。空のままでも構いませんが、その場合はパスフレーズなしでSSH接続が可能になります。
    > Enter passphrase (empty for no passphrase): [Type a passphrase]
    > Enter same passphrase again: [Type passphrase again]
    

キーペアが生成されると、指定したディレクトリに秘密鍵(例: id_ed25519)と公開鍵(例: id_ed25519.pub)が作成されます。

公開鍵のコピー

生成された公開鍵の内容をクリップボードにコピーします。

  • macOSの場合:
    pbcopy < ~/.ssh/id_ed25519.pub
    # または
    pbcopy < ~/.ssh/id_rsa.pub
    
  • Linuxの場合 (xclipがインストールされている場合):
    xclip -sel clip < ~/.ssh/id_ed25519.pub
    # または
    xclip -sel clip < ~/.ssh/id_rsa.pub
    
    xclipがインストールされていない場合は、cat ~/.ssh/id_ed25519.pub などで内容を表示し、手動でコピーしてください。

2. GitHubに公開鍵を登録する

  1. GitHubにログインし、画面右上のプロフィールアイコンをクリックし、「Settings」を選択します。
  2. 左側のサイドバーで「SSH and GPG keys」を選択します。
  3. 「New SSH key」または「Add SSH key」ボタンをクリックします。
  4. 「Title」には、このSSHキーを識別しやすい名前(例: My MacBook Pro)を入力します。
  5. 「Key」フィールドに、先ほどクリップボードにコピーした公開鍵の内容を貼り付けます。
  6. 「Add SSH key」をクリックして登録を完了します。

3. SSH接続テスト

GitHubへのSSH接続が正しく設定されたかを確認します。

ssh -T git@github.com

初めて接続する場合、ホストのフィンガープリントの確認を求められることがあります。yes と入力して続行します。

The authenticity of host 'github.com (IPアドレス)' can't be established.
RSA key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

以下のようなメッセージが表示されれば、SSH接続は成功です。

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

username の部分はご自身のGitHubユーザー名に置き換わります。

4. リモートリポジトリのURLをSSH形式に変更する

既存のローカルリポジトリがHTTPSでクローンされている場合、リモートURLをSSH形式に変更する必要があります。

リポジトリのディレクトリに移動し、以下のコマンドを実行します。

cd [あなたのリポジトリのパス]
git remote set-url origin git@github.com:[あなたのGitHubユーザー名]/[リポジトリ名].git

例: git remote set-url origin git@github.com:yuhi-sa/my-awesome-repo.git

これで、git pullgit push などの操作がSSH経由で行われるようになります。

参考