😊

Git/GitHubを安全・快適に!SSHと公開鍵認証の仕組みから設定まで

に公開

1.SSHとは?(安全なトンネル)

SSH (Secure Shell) は、ネットワーク経由で安全に通信するための技術のこと。
データを暗号化することで、盗聴や改ざんを防ぎ、まるで安全なトンネルを通すように通信します。

2. 公開鍵認証の仕組み

SSH認証では公開鍵暗号方式の原理を応用した「デジタル署名」という非常に強力な仕組みを使います。この仕組みによって、パスワードを知らなくても、あなたが秘密鍵の正当な所有者であることをサーバーに証明できます。

  • 秘密鍵 (Private Key):あなただけが持つ鍵のこと。認証時にはこの鍵でサーバーからの情報に「署名(サイン)」を行い、本人の証明として使用します。絶対に外部に漏らしてはいけません。
  • 公開鍵 (Public Key):誰にでも渡してOKな鍵のこと。GitHubなどのサーバーに登録し、秘密鍵で行われた署名が正しいかどうかを「検証」するために使用します。
  • 認証の流れの要点:
    1. 公開鍵をGitHubに登録。
    2. GitHubは登録された公開鍵でデータを暗号化し送信。
    3. PCが手元の秘密鍵でそのデータを復号。
    4. 復号が成功すれば、GitHubが秘密鍵を持っている本人だと確認しアクセスを許可。
  • この自動的な鍵のやり取りにより、パスワードの入力なしで安全に認証が完了します。

3. GitとGitHubで使うメリット

SSH認証を使う最大の利点は、以下の2点です。

  1. パスワード入力不要: 毎回認証情報を入力する手間がなくなります。
  2. 高い安全性: パスワードよりも安全な方法で、機密性の高い通信が行えます。

4. 実践!SSH設定の3ステップ

ステップ1: 鍵ペアの作成ターミナルまたはGit Bashで以下のコマンドを実行し、秘密鍵と公開鍵のペアを作成します。

bash $ ssh-keygen -t ed25519 -C "your_email@example.com"

  • ed25519は現在推奨される安全性の高い暗号方式です。
  • 途中で聞かれるパスフレーズは必ず設定し、鍵を保護しましょう。鍵は通常 bash ~/.ssh/id_ed25519(秘密鍵)、bash ~/.ssh/id_ed25519.pub (公開鍵)として保存されます。

ステップ2: 公開鍵をGitHubに登録

作成された公開鍵ファイル(.pubが付くファイル)の中身をコピーします。
bash # Mac/Linuxの場合 $ cat ~/.ssh/id_ed25519.pub

  1. GitHubにログインし、「Settings」 > 「SSH and GPG keys」を開きます。
  2. 「New SSH key」ボタンを押し、コピーした公開鍵の中身を貼り付けて登録します。

ステップ3: SSHアドレスを使う

Gitリポジトリを操作する際、SSH形式のアドレスを使います。

  • SSH形式: bash git@github.com:user/repo.git
  • HTTPS形式: https://github.com/user/repo.git
    リポジトリをクローン(取得)する際は、git clone git@github.com:user/repo.git のようにSSHアドレスを指定しましょう。これで、皆さんのGit操作が安全かつ非常に快適になります。

0.この記事を書くにあたって学んだこと

  • 「##」+「半角スペース」で見出し2を作成できること
  • 「-」+「半角スペース」でリストになること
  • そうやって整えた見た目があってようやく「記事といえる」こと

Discussion