この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:5
ページ更新者:T
更新日時:2026-06-11 07:10:02

タイトル: Failed to clone https://github.com/symfony/thanks.git via https, ssh protocol
SEOタイトル: Composer「Failed to clone symfony/thanks via https, ssh protocol」の原因と対処

この記事の要点
  • Composer install / update 時に symfony/thanks など GitHub からの clone が https / ssh 両方で失敗するエラー
  • 主な原因: GitHub API レート制限 / 社内プロキシ・ファイアウォール / SSH 鍵未設定 / Composer の auth.json 未設定
  • 基本対処: Personal Access Token (PAT)auth.json に登録 → API レート制限を回避
  • プロキシ環境では HTTP_PROXY / HTTPS_PROXY を設定し、composer config -g github-protocols https で SSH を回避
  • composer config --global secure-http false非推奨(中間者攻撃リスク)。社内 Satis ミラー利用を検討

このエラーの概要

composer installcomposer update を実行したときに、次のようなメッセージが出て止まることがあります:

  - Installing symfony/thanks (v1.2.10):
    Failed to download symfony/thanks from dist: ...
    Now trying to download from source

  - Syncing symfony/thanks (v1.2.10) into cache

  Failed to clone https://github.com/symfony/thanks.git via https, ssh protocols,
  aborting.

  - https://github.com/symfony/thanks.git
    Cloning into '/path/to/vendor/symfony/thanks'...
    fatal: unable to access 'https://github.com/symfony/thanks.git/':
    Failed to connect to github.com port 443: Connection timed out

  - git@github.com:symfony/thanks.git
    Cloning into '/path/to/vendor/symfony/thanks'...
    Permission denied (publickey).
    fatal: Could not read from remote repository.

Composer は まず dist (zip)、ダメなら source (git clone) を試します。両方失敗するとこのエラーになります。symfony/thanks 以外(laravel/framework 等)でも同じ原理で発生します。

原因の切り分け

症状主な原因対処
API rate limit exceededGitHub API の匿名アクセス上限 (60/h)Personal Access Token を auth.json に登録(対処1)
Connection timed out / Could not resolve host社内プロキシ / ファイアウォールHTTP_PROXY 設定(対処2)
Permission denied (publickey)SSH 鍵未登録 / ssh-agent 未起動https プロトコル強制(対処3)
SSL certificate problem古い CA 証明書 / 自己署名プロキシCA 更新(対処4)
composer 1.x で発生Composer 1 系の互換問題Composer 2 へ更新(対処5)

対処1: GitHub Personal Access Token を設定(最も効果的)

未認証だと GitHub API は 1 時間 60 リクエストまでしか受け付けません。Composer は依存解決時に API を多用するためすぐ枯渇します。

  1. GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
  2. Generate new token → スコープは public_repo のみで OK(プライベートリポジトリ利用時は repo
  3. 生成された ghp_xxxxxxxxxxxx を控える
  4. Composer に登録
# グローバル auth.json (~/.composer/auth.json または ~/.config/composer/auth.json)
composer config -g github-oauth.github.com ghp_xxxxxxxxxxxxxxxxxxxx

# プロジェクトローカル (auth.json を .gitignore に必ず追加)
composer config github-oauth.github.com ghp_xxxxxxxxxxxxxxxxxxxx

# 確認
composer config -g --list | grep github
cat ~/.composer/auth.json

これで composer install は dist 経由(API 認証あり)で取れるようになり、source fallback まで行きません。

対処2: 社内プロキシ環境

会社の PC / サーバから直接 github.com に出られない場合、プロキシ経由が必須です。

# 環境変数(推奨)
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=http://proxy.example.com:8080
export NO_PROXY=localhost,127.0.0.1,.internal.example.com

# Windows
setx HTTP_PROXY "http://proxy.example.com:8080"
setx HTTPS_PROXY "http://proxy.example.com:8080"

# git にも設定
git config --global http.proxy http://proxy.example.com:8080
git config --global https.proxy http://proxy.example.com:8080

# 認証付きプロキシ
export HTTPS_PROXY=http://user:pass@proxy.example.com:8080

対処3: SSH を諦めて HTTPS 強制

SSH 鍵が無いマシンや CI 環境では、SSH を完全に無効化して HTTPS のみにします:

# Composer に "git は https しか使わない" と教える
composer config -g github-protocols https

# git レベルでも書き換え(git config)
git config --global url."https://github.com/".insteadOf git@github.com:
git config --global url."https://".insteadOf git://

# 確認
git config --global --get-regexp url
# url.https://github.com/.insteadof git@github.com:

逆に SSH 鍵を整備したい場合:

# ed25519 鍵生成
ssh-keygen -t ed25519 -C "you@example.com"

# 公開鍵を GitHub Settings → SSH keys に登録
cat ~/.ssh/id_ed25519.pub

# ssh-agent 起動と鍵追加
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

# 疎通確認
ssh -T git@github.com
# → Hi <username>! You've successfully authenticated, ...

対処4: SSL / 証明書エラー

SSL certificate problem: unable to get local issuer certificate が併発する場合:

# CentOS / RHEL
sudo yum install -y ca-certificates
sudo update-ca-trust

# Ubuntu / Debian
sudo apt-get install -y ca-certificates
sudo update-ca-certificates

# Composer の CA 設定を確認
composer diagnose

# どうしても無視(非推奨)
composer config --global secure-http false
# → http:// リポジトリへの中間者攻撃を許してしまうので、
#   原則使わず、社内 CA を OS に登録するのが正解

対処5: Composer 2.x への更新

Composer 1 系は依存解決が遅く、GitHub API を叩く回数も多いため、レート制限に当たりやすいです。2.x なら数倍速く、API 呼び出しも激減します:

composer self-update --2

# 確認
composer --version
# Composer version 2.7.x ...

# プロジェクト要件を 2.x に更新
composer config platform.php 8.2
composer update

auth.json の場所と注意点

  • Linux/macOS グローバル: ~/.composer/auth.json または ~/.config/composer/auth.json
  • Windows グローバル: %APPDATA%\Composer\auth.json
  • プロジェクト直下: auth.json必ず .gitignore へ。トークン漏洩すると即悪用される)
  • CI/CD では環境変数経由: COMPOSER_AUTH='{"github-oauth":{"github.com":"ghp_xxx"}}'

FAQ

Q: PAT を作っても直らない
A: composer clear-cache でキャッシュをクリアし、~/.composer/auth.json が正しい場所にあるか composer diagnose で確認してください。

Q: 本番デプロイで毎回エラーになる
A: 本番は composer install --no-dev --prefer-dist を使い、可能なら Satis や Private Packagist で社内ミラーを建てるとレート制限と障害の両方に強くなります。

Q: Docker ビルドで失敗する
A: --build-arg GITHUB_TOKEN=$GH_TOKEN でトークンを渡し、Dockerfile 内で composer config -g github-oauth.github.com $GITHUB_TOKEN。layer に残らないよう --secret マウントが理想です。