botdepobotdepoВсе статьи

2 октября 2026 г.

Не клонируется репозиторий: Authentication failed и Repository not found

Деплой падает на первом же шаге: fatal: Authentication failed, remote: Invalid username or token или remote: Repository not found. До кода бота дело не дошло: сервер не смог скачать репозиторий с GitHub.

Что значат эти ошибки

Причины по убыванию вероятности

  1. Ссылка не на ваш репозиторий. Звучит странно, но это самое частое: в поле осталась ссылка-пример вроде https://github.com/owner/repo. Мы видели, как её деплоили восемь раз подряд, каждый раз с новым токеном. Токен тут ни при чём, такого репозитория не существует.
  2. Репозиторий приватный, а токен не указан или выдан без доступа к этому репозиторию.
  3. Токен скопирован не целиком, с пробелом в конце или уже истёк (у fine-grained токенов есть срок действия).
  4. Ветка называется иначе: master вместо main в старых репозиториях.

Как исправить

  1. Откройте свой репозиторий на GitHub и скопируйте адрес прямо из адресной строки браузера. Он должен выглядеть как https://github.com/ваш-логин/имя-репозитория, с вашим логином, а не owner.
  2. Посмотрите на значок рядом с названием репозитория. Public — токен не нужен вообще, поле оставьте пустым. Private — нужен токен.
  3. Для приватного репозитория создайте fine-grained токен на github.com/settings/personal-access-tokens/new:
    • Repository access → Only select repositories → выберите репозиторий бота;
    • Repository permissions → Contents: Read-only. Больше ничего не нужно;
    • скопируйте токен сразу (он начинается с github_pat_), GitHub покажет его только один раз.
  4. Проверьте ветку: на странице репозитория слева вверху выпадающий список с именем ветки. Впишите его в поле «Ветка».
  5. Хотите проверить токен до деплоя? Запустите у себя:
    git clone https://<ТОКЕН>@github.com/ваш-логин/репо.git /tmp/check
    Склонировалось — значит, и на сервере склонируется.

Или без всего этого

Самый простой путь — публичный репозиторий без секретов в коде: токен бота передаётся отдельно, через переменные окружения, а не лежит в файле. Тогда никакой токен GitHub не нужен. Если код закрытый, в botdepo достаточно один раз вставить fine-grained токен с правом только на чтение этого репозитория: он хранится зашифрованным и нигде не показывается. Задеплоить бота.

Частые вопросы

Можно ли дать классический токен (ghp_…)?

Будет работать, но он даёт доступ ко всем вашим репозиториям сразу. Fine-grained с одним репозиторием и правом только на чтение безопаснее: если он утечёт, утечёт только код бота.

Токен работал, а сейчас нет — что случилось?

Скорее всего, истёк срок действия: при создании GitHub по умолчанию ставит 30 дней. Создайте новый и обновите его в настройках бота.