Ошибка аутентификации GitHub через https, возврат неверного адреса электронной почты


128

Запуск push или любого другого действия с GitHub из командной строки (через https, а не ssh), который вызывает имя пользователя и пароль, не только не выполняется, но, когда это происходит, он возвращает

Username for 'https://github.com': username
Password for 'https://username@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/username/repository.git/'

У меня нет @github.com адреса Пароль и имя пользователя верны.

Я знаю, что могу переключиться на SSH и использовать ключи, но это не дает ответа на вопрос, почему аутентификация не работает по https.


Документация git-scm.com/book/en/… git-config - Получение и установка репозитория или глобальных параметров git-scm.com/docs/git-config
— Джон Смит

Ответы:


171

Служба поддержки GitHub сразу определила корень проблемы: двухфакторную авторизацию.

Чтобы использовать GitHub через оболочку с https, создайте токен OAuth . Как отмечается на странице, мне пришлось удалить свои учетные данные для имени пользователя и пароля из Связки ключей, но при наличии osx-keychainтокен хранится в качестве пароля, и все работает точно так же, как и по https, без двухфакторной авторизации.


4
+1. Вы также можете использовать PAT (токен персонального доступа) в зашифрованном netrc: stackoverflow.com/a/18607931/6309
— VonC

В чем разница между PAT и OAuth?
— lindhe

Токен @lindhe OAuth - это тип токена, в данном случае PAT - это токен OAauth.
— Керри Джонс

22

У меня нет @github.comадреса

Необязательно: @это разделитель между именем пользователя: паролем и доменом.
Это не адрес электронной почты.

Полный https-адрес GitHub будет выглядеть так:

https://username:password@github.com/username/reponame.git

Без пароля (который затем будет запрошен в командной строке) это даст:

https://username@github.com/username/reponame.git

Но опять же, username@github.comэто не адрес электронной почты, а только первая часть учетных данных.

Убедитесь, что ваш регистр usernameи reponameправильный: он чувствителен к регистру .

Обратите внимание, что вы можете хранить и зашифровать свои учетные данные в .netrc.gpg(или _netrc.gpgв Windows), если вы не хотите, чтобы эти учетные данные были ясно указаны в URL-адресе.
См. « Есть ли способ пропустить ввод пароля при использованииhttps://github ».


Вы также можете не указывать пароль, вводя его каждый раз. В таком случае было бы https://username@github.com/username/reponame.git.
— Марк Хилдрет

О, в этом есть смысл. Спасибо. Я знал о чувствительности к регистру и уверен, что вводимые мной имя пользователя и пароль верны. (Они работают нормально, чтобы войти на сайт.)
— A

2
@ele да, но содержит ли ваш пароль специальные символы (например ! * ' ( ) ; : @ & = + $ , / ? # [ ])? Они должны быть "закодированы в процентах" ( en.wikipedia.org/wiki/Percent-encoding ).
— VonC

Пароль буквенно-цифровой. Я посмотрю, что дает 'git remote -v', когда буду рядом с машиной, но похоже, что в следующий раз мне может потребоваться связаться со службой поддержки GitHub.
— ele

@ele сначала попробуйте подход .netrc (даже не шифруйте, просто для тестирования). Если это не сработает, следующим шагом будет поддержка GitHub.
— VonC

21
  • Перейдите в Диспетчер учетных данных => Диспетчер Windows
  • Удалить все, что связано с tfs
  • Теперь нажмите Добавить общие учетные данные и укажите следующие значения.

    (1) Интернет или сетевой адрес: git: https: //tfs.donamain имя (2) имя пользователя: ваше имя пользователя (3) пароль: ваш пароль

    это должно исправить это


Вот это да. Мне нравится, как он сохраняет неправильный пароль, если вы его неправильно вводите. Тогда вам придется вручную обновить его или удалить
— Каньон Колоб

10

Это может произойти в Windows, если вы ранее сохранили другие учетные данные. Перейдите в диспетчер учетных данных и удалите сохраненные учетные данные github


1
Также можно напрямую изменить пароль в диспетчере учетных данных Windows на новый пароль.
— Spenhouet


8

То же самое произошло и со мной, когда я включил двухстороннюю аутентификацию для github. Что я сделал, чтобы решить:

  • Получите личный токен доступа. Это необходимо проверить и сгенерировать, если оно еще не доступно. Ссылка для этого: https://github.com/settings/tokens
  • Перейдите в свою локальную папку, удалите папку и повторно клонируйте ветку из github.
  • Теперь попробуйте команду, которую вы пробовали ранее, например: git pull origin master
  • Введите имя пользователя и пароль, вставьте сгенерированный токен, а также не забудьте где-нибудь сохранить этот токен, чтобы вы могли повторно использовать его при необходимости.

Это решит вашу проблему.


Хорошая выноска - это происходило со мной на Mac => мне пришлось регенерировать мой PAT
— SliverNinja - MSFT

Мы должны сгенерировать токен, если нам нужны разрешения, отсутствующие в ранее сгенерированных токенах. Также, если мы потеряли наш предыдущий токен, мы можем сгенерировать этот новый токен и использовать его в качестве пароля для аутентификации вместо нашего исходного пароля git.
— Мохд Белал

5

Просто на случай, если это поможет кому-то еще, я был подписан в приложение Mac, командная строка работает нормально, но поскольку я затем включил 2FA, мои команды возвращали ошибку. Мне пришлось выйти из приложения, тогда я мог бы использовать свой токен личного доступа в своих командах в соответствии с ответом ele здесь .

Надеюсь, это кому-то поможет!


-2

В Windows вы можете быть заблокированы антивирусом или брандмауэром Windows. Временно отключите эти службы и отправьте / извлеките из удаленного источника.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.