GitHub

SSH 接続とは? HTTPS との違い

Git の SSH 接続と HTTPS 接続の違い、メリット・デメリット、どちらを選ぶべきかを解説

SSH 接続とは? HTTPS との違い eyecatch

HTTPS と SSH の2つの接続方式

GitHub とローカル PC の間で clone / push / pull などの通信を行うとき、HTTPS と SSH の2つの方式を選べます。

どちらを使っても Git の操作自体は同じです。

違いは「どうやって自分を証明するか(認証)」の部分です。

HTTPS 接続の特徴

URL が https://github.com/... の形式です。

初回アクセス時にユーザー名とパーソナルアクセストークン(PAT)の入力を求められます。

設定が簡単で、すぐに使い始められるのがメリットです。

ただしトークンには有効期限があり、期限切れになると再設定が必要です。

個人で使う分には問題ありませんが、チーム開発では SSH を推奨されることが多いです。

bash
# HTTPS での clone
git clone https://github.com/user/repo.git

# URL の確認
git remote -v
# origin  https://github.com/user/repo.git (fetch)

SSH 接続の特徴

URL が git@github.com:... の形式です。

事前に SSH 鍵ペア(秘密鍵と公開鍵)を作成し、公開鍵を GitHub に登録する必要があります。

初期設定に手間がかかりますが、一度設定すればパスワードやトークンの入力が不要になります。

認証情報を毎回やり取りしないため、チーム開発では SSH が推奨されることが多いです。

bash
# SSH での clone
git clone git@github.com:user/repo.git

# URL の確認
git remote -v
# origin  git@github.com:user/repo.git (fetch)

比較表

  • HTTPS

    設定が簡単ですぐ使い始められます。トークン管理が必要で有効期限もありますが、ファイアウォール環境でも通りやすいのが利点です。

  • SSH

    初期設定に手間がかかるものの、一度設定すれば入力不要で安全に使えます。有効期限もありません。

  • 迷ったら

    まず HTTPS で始めて、慣れてきたら SSH に切り替えるのがおすすめです。

セキュリティ上の注意点

どちらの方式でも認証情報の管理には注意が必要です。

  • HTTPS(PAT)

    トークンは文字列なので、ログや設定ファイルに誤って残ると漏洩リスクがあります。credential helper で保存する場合も、保存先(OS のキーチェーンやファイル)の管理が求められます。

  • SSH(秘密鍵)

    秘密鍵が漏洩すると、その鍵で認証可能なすべてのリポジトリに不正アクセスされる危険があります。サプライチェーン攻撃では CI/CD 環境やビルドサーバーに保存された秘密鍵が標的となるケースも報告されています。パスフレーズの設定、鍵ファイルのパーミッション管理(chmod 600)、不要な鍵の GitHub からの削除が重要です。

接続方式を切り替える

  1. 現在の URL を確認

    git remote -v で現在の接続先を確認します。

  2. git remote set-url で URL を置き換える

    新しい形式の URL(HTTPS または SSH)を指定するだけで切り替わります。リポジトリを clone し直す必要はありません。

bash
# HTTPS から SSH に切り替え
git remote set-url origin git@github.com:user/repo.git

# SSH から HTTPS に切り替え
git remote set-url origin https://github.com/user/repo.git

SSH 鍵の設定手順

SSH を使う場合は OS ごとに鍵の生成・登録手順が異なります。

お使いの OS に合わせて以下のガイドを参照してください。

関連コマンド