#Что означает ошибка
remote: Invalid username or password. fatal: Authentication failed
Ошибка Authentication failed / remote: Support for password authentication was removed при git push и git clone по HTTPS означает, что сервер не принял учётные данные. GitHub и многие другие хостинги не принимают пароль аккаунта: нужен персональный токен (PAT) или SSH-ключ.
Часто виноват сохранённый старый пароль в менеджере учётных данных.
Проверьте способ доступа и очистите кэш.
Многие сервисы (GitHub, GitLab) больше не принимают пароль учётной записи для Git по HTTPS. Нужен персональный токен доступа или SSH-ключ.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Используется пароль вместо токена | Ошибка сервиса прямо указывает, что обычный пароль отклонён, а URL начинается с https:// | Создайте токен на нужный репозиторий с минимальными правами, не передавайте его третьим лицам. |
| Устаревшие сохранённые данные | Git использует автоматически сохранённые неправильные данные без нового запроса | Удалите только запись для нужного домена из менеджера учётных данных. |
| Нет доступа к репозиторию | Репозиторий открывается в браузере не той учётной записью либо отсутствует разрешение записи | Сверьте учётную запись, роль, срок токена и политику организации. |
| Неверный адрес remote | В git remote -v указан неправильный владелец или хост | Скопируйте URL с официальной страницы нужного репозитория и сверьте доступ. |
#Пошаговое решение
- Проверьте адрес репозиторияОткройте терминал в папке проекта: в VS Code выберите «Терминал» → «Новый терминал», либо откройте Git Bash/PowerShell и перейдите командой
cdв каталог с.git. Запуститеgit remote -vи проверьте URL напротивoriginдля fetch/push. Адрес должен вести именно к вашему репозиторию; сверьте владельца и название с адресной строкой на сайте GitHub/GitLab. Если репозиторий приватный, убедитесь, что он открывается под нужной учётной записью в браузере; если возвращает 404, это может означать отсутствие прав. - Создайте персональный токенДля GitHub и подключения по
https://откройте на сайте аватар → Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token. Выберите владельца и нужный репозиторий, небольшой срок действия; для push обычно требуется разрешение Repository permissions → Contents: Read and write, для clone достаточно Read-only. Организация может требовать подтверждения владельца. Для GitLab или корпоративного Git-сервера путь создания токена и названия прав другие — используйте документацию вашего сервиса. Никогда не вставляйте токен в URL, исходный код, сообщение поддержки или снимок экрана. - Очистите сохранённые учётные данныеЕсли Git продолжает отправлять старый пароль: в Windows откройте «Пуск» → «Диспетчер учётных данных» → «Учётные данные Windows»; найдите запись для того же домена, что указан в
git remote -v(например,git:https://github.com), и удалите только её. Это приведёт к новому запросу учётных данных при следующей операции; другие записи не трогайте. На macOS проверьте «Связка ключей» для домена, в Linux — настроенный Git credential helper (git config --show-origin --get-all credential.helper); не удаляйте всю связку/хранилище. - Введите токен вместо пароляВ терминале снова выполните исходную команду
git fetch originдля проверки чтения либоgit pushдля записи, если у вас есть коммиты для отправки. При запросе в HTTPS введите имя пользователя, а вместо пароля вставьте персональный токен. При входе через Git Credential Manager следуйте окну браузера; токен может вообще не понадобиться вручную. Успехfetch— завершение безAuthentication failed; успехpush— сообщение об обновлении ветки. Альтернатива — настроить SSH-ключ по официальной инструкции сервиса, но смешивать SSH и HTTPS не требуется. - Проверьте доступ к репозиториюЕсли ошибка осталась, откройте страницу репозитория и проверьте роль пользователя (чтение или запись), срок токена, выбранный репозиторий и дополнительные разрешения организации/SSO. Сообщения
403иpermission deniedмогут означать недостаток прав, а не неверный токен. Для SSH отдельно проверьтеssh -T git@github.com, но только еслиgit remote -vсодержит адресgit@...илиssh://.... Если недоступна организация, запросите разрешение администратора, не создавайте широкие токены для обхода ограничений. - Показывает адреса удалённых репозиториевLinux · Терминал (Bash)КомандаПоказывает адреса удалённых репозиториев.
git remote -v
#HTTPS и токены
Создайте токен: GitHub → Settings → Developer settings → Personal access tokens: для fine-grained токена выбирайте только нужный репозиторий и разрешения Contents (Read для чтения, Read and write для push). Введите его вместо пароля. Очистите старые данные: Windows — «Диспетчер учётных данных» → удалить git:https://github.com; macOS — Keychain Access → найти github.com; Linux — git credential-cache exit и git config --global --unset credential.helper. Сохранение: git config --global credential.helper manager (Windows) или store.
#SSH
Создайте ключ: ssh-keygen -t ed25519 -C "email", добавьте содержимое ~/.ssh/id_ed25519.pub в настройки аккаунта (SSH keys). Проверка: ssh -T git@github.com. Переключите адрес: git remote set-url origin git@github.com:user/repo.git. Если ключей несколько, настройте ~/.ssh/config с IdentityFile. Права на ключ: chmod 600 ~/.ssh/id_ed25519.
#Прочее
Проверьте права на репозиторий (вы должны быть участником), срок действия токена и SSO-авторизацию токена для организации. Проверьте URL: git remote -v. Для GitLab и корпоративных серверов используйте токены доступа проекта. При двухфакторной аутентификации токен обязателен. Выведите подробности: GIT_CURL_VERBOSE=1 GIT_TRACE=1 git push.
# Только если выбран SSH-способ для GitHub; замените email на свойssh-keygen -t ed25519 -C "your-email@example.com"# После добавления содержимого публичного ключа в Settings → SSH and GPG keysssh -T git@github.com# URL замените на точный из кнопки Code → SSH страницы своего репозиторияgit remote set-url origin git@github.com:OWNER/REPO.git