Published on

SSH認証でGithubを使用する(windows)

Authors
  • Name
    Twitter

Windows 10でSSHキーを生成してGitHubに登録する方法

前提条件

  • Windows 10がインストールされている
  • PowerShellが利用可能
  • Gitがインストール済み

HTTPS認証よりセキュリティ向上が見込める。そしてパスワード入力が不要のため、パスワードを思い出す手間が省け効率的なアクセスが可能になる。


手順

  1. SSHキーの生成

    PowerShellを開き、以下のコマンドを実行してSSHキーを生成する。

    ssh-keygen -t ed25519 -C "xxx@gmail.com"
    
    • -t ed25519 はEd25519アルゴリズムを指定。
    • -C "xxx@gmail.com" にはメールアドレスを記入する。

    以下のように表示される。

    Generating public/private ed25519 key pair.
    Enter passphrase (empty for no passphrase): (パスフレーズを入力、もしくは空のままEnter)
    Enter same passphrase again: (再度同じパスフレーズを入力)
    Your public key has been saved in C:\Users\user/.ssh/id_ed25519.pub
    

    秘密鍵は、ssh-keygen コマンドを実行したときに自動的に生成される。このプロセスの中で、秘密鍵公開鍵のペアが作成され、それぞれ以下のように保存される:

    • 秘密鍵: デフォルトでは C:\Users\user\.ssh\id_ed25519 に保存される(拡張子なしのファイル)。
    • 公開鍵: デフォルトでは C:\Users\user\.ssh\id_ed25519.pub に保存される。

    ssh-keygen を実行するとき、ファイルを保存する場所やファイル名を指定しない限り、デフォルトのディレクトリに鍵ペアが作成される。この秘密鍵ファイルは、GitHubなどに接続する際にのみ利用し、外部には公開しない。

  2. 公開鍵をクリップボードにコピー

    以下のコマンドで公開鍵をクリップボードにコピーする。

    Get-Content C:\Users\user\.ssh\id_ed25519.pub | clip
    
  3. GitHubにSSHキーを登録

    GitHubにログインし、以下の手順でSSHキーを登録する。

    1. GitHubの「Settings」から「SSH and GPG keys」を選択し、「New SSH key」をクリック。
    2. 「Key」フォームにクリップボードの公開鍵を貼り付け、「Add SSH key」をクリック。既存のキーがあれば削除も可能。
  4. SSH接続の確認

    PowerShellで以下のコマンドを実行し、GitHubへのSSH接続をテストする。

    ssh -T github.com
    

    成功すると、以下のようなメッセージが表示される。

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

このメッセージが表示されれば、SSH認証の設定は完了。

SSHキーによる認証の仕組み

SSHキーを使った認証は、公開鍵暗号方式を利用しており、以下のように動作する。

  • 秘密鍵: ユーザーが保持し、GitHubなどのサービスに接続する際に使う。外部には公開しない。
  • 公開鍵: GitHubに登録するもので、秘密鍵がないと利用できないため、公開しても安全である。

認証の流れ

  1. ユーザーがGitHubに接続を試みると、GitHubは公開鍵に基づいた「チャレンジ」をユーザーに送る。
  2. ユーザーのマシン上で秘密鍵を使ってこのチャレンジに応答する。
  3. GitHubは応答を確認し、正しい秘密鍵がある場合にのみアクセスを許可する。

この仕組みにより、秘密鍵を持つユーザーだけが安全にGitHubにアクセスできる。


SSH認証設定後のGit操作ユースケース

SSH認証を設定すると、GitHub上のリポジトリへのアクセスが簡単かつ安全に行える。以下は、よく使うユースケースである。

  1. リポジトリのクローン作成

    • リポジトリを自分のPCにコピーする。
    git clone git@github.com:username/repository.git
    
  2. コードのプッシュ

    • 自分の変更をリモートリポジトリに反映する。
    git add .
    git commit -m "変更内容"
    git push
    
  3. プルリクエストの確認

    • 他のメンバーのプルリクエストをローカルに取り込んで動作確認ができる。
    git fetch origin pull/ID/head:ブランチ名
    git checkout ブランチ名
    
  4. リモートの変更をプル

    • リモートリポジトリの最新の変更を自分のローカルに取得する。
    git pull
    

これらの操作がSSHキーの認証によりパスワードなしで行えるため、スムーズに開発作業が進められる。

参考ページ