🔐
GitHub: HTTPSとSSHの違いと使い分け
はじめに
GitHub を VSCode 上で利用していた際、GitHub のウェブサイトからコピーした HTTPS のリポジトリ URL を使ってリモートを登録したところ、repository not found
のエラーが出て上手くいきませんでした。URL 自体に間違いはなかったため、原因を調べる中で、HTTPS と SSH の違いが影響していることが分かりました。
本記事は、同じようなエラーでつまずく Git 初心者の方に向けて、HTTPS と SSH の違い、選び方、設定方法をわかりやすくまとめたものです。
前提知識の補足
- Git(ギット):バージョン管理システムの一種。ソースコードの履歴を管理できる。
- GitHub:Git を使ってコードをホスティング(公開・共有)できるウェブサービス。
- VSCode:Microsoft 製のコードエディタ。Git 操作も統合されており、GUI で管理できる。
- リモートリポジトリ:クラウド上の Git リポジトリ。GitHub にあるコードのこと。
- クローン(clone):リモートリポジトリを自分のPCにコピーする操作。
- ターミナル/CLI:コマンドを入力して操作する画面。VSCode 内にも搭載されている。
- Personal Access Token(PAT):パスワードの代わりに使う、GitHub 専用の認証トークン。
- SSH 鍵:認証のために使う鍵ペア(公開鍵と秘密鍵)で、安全な通信を行うための仕組み。
Git リモートの接続方法:HTTPS と SSH の違い
1. HTTPS とは?
HTTPS は、認証と通信を暗号化したプロトコルで、以下のように使います:
git clone https://github.com/ユーザー名/リポジトリ名.git
特徴
- GitHub サイト上からすぐにコピーして使える
- 通信は暗号化されていて安全
- 認証にユーザー名とパスワード、または Personal Access Token(PAT)が必要
注意点
- プッシュやフェッチのたびに認証が必要な場合がある
- GitHub がパスワード認証を廃止したため、PAT を使う必要がある
2. SSH とは?
SSH(Secure Shell)は、公開鍵と秘密鍵の仕組みに基づく認証方式で、以下のように使います:
git clone git@github.com:ユーザー名/リポジトリ名.git
特徴
- 最初に SSH 鍵を設定すれば、それ以降の認証が不要
- 認証が高速でスムーズ
- CI/CD や自動化にも向いている
注意点
- 最初に
ssh-keygen
で鍵を作成し、GitHub に登録する必要がある
手順:どちらを使うかで変わる設定
HTTPS の使い方(基本)
- GitHub で対象リポジトリのページを開く
- 緑の「Code」ボタンから HTTPS の URL をコピー
- VSCode ターミナルや CLI で次を実行:
git clone https://github.com/lucentrains/zenn_library.git
認証を求められたら、GitHub の PAT(Personal Access Token)を入力
SSH の使い方(推奨)
- SSH 鍵を生成:
ssh-keygen -t ed25519 -C "your_email@example.com"
- 公開鍵 (
~/.ssh/id_ed25519.pub
) を GitHub に登録 - SSH URL を使って clone:
git clone git@github.com:lucentrains/zenn_library.git
VSCode から Git 操作をする場合も、これで毎回認証不要になります
ベンチマーク比較(HTTPS vs SSH)
簡易的な速度比較では、SSH のほうが高速なことが多いです。
# HTTPS
$ time git clone https://github.com/example/repo.git
# SSH
$ time git clone git@github.com:example/repo.git
特に毎日 Git 操作をするなら、SSH が快適です。
まとめ:どちらを使うべき?
項目 | HTTPS | SSH |
---|---|---|
設定の簡単さ | ◎(すぐ使える) | △(初期設定が必要) |
認証の手軽さ | △(毎回トークン入力の可能性) | ◎(一度設定すれば認証不要) |
自動化との相性 | △ | ◎ |
セキュリティ | ◎(暗号化) | ◎(公開鍵方式) |
結論
- 一時的に使うなら HTTPS でも十分ですが、
- 継続的に使うなら SSH の利用を強くおすすめします。
初学者でも、最初に SSH をしっかり設定しておくことで、あとから悩むことが減ります。GitHub に慣れてきたら、早めに SSH での接続方法に切り替えてみましょう!
Discussion