2014-01-03 4 views
97

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

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

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

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

+0

Документация ** http: //git-scm.com/book/en/Git-on-the-Server-Generating-Your-SSH-Public-Key** git-config - Получить и установить репозиторий или глобальные параметры ** http: //git-scm.com/docs/git-config** –

ответ

137

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

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

+4

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

+4

Я переключаюсь на SSH, и он работает – onmyway133

+0

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

16

не имеют @github.com адрес

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

Полный GitHub HTTPS URL будет:

https://username:[email protected]/username/reponame.git 

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

https://[email protected]/username/reponame.git 

Но опять же, [email protected] ISN 'e адрес электронной почты, только первая часть учетных данных.

Удостоверьтесь, что в вашем случае username и reponame указан: it is case sensitive.

Обратите внимание, что вы можете хранить и шифровать свои учетные данные в .netrc.gpg (или _netrc.gpg на Windows), если вы не хотите, чтобы указанные учетные данные были очищены в URL-адресе.
См. "Is there a way to skip password typing when using https://github".

+0

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

+1

@MarkHildreth хорошо пункт. Я включил его в ответ. – VonC

+0

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

4

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

4

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

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

-1

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

0

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

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

Выполнение этой задачи поможет решить вашу проблему.

Смежные вопросы