Ошибка аутентификации 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.