Git Clone из GitHub через https с двухфакторной аутентификацией


129

Недавно я начал использовать двухфакторную аутентификацию на GitHub, и теперь я не могу использовать git поверх https в частных репозиториях обычным способом:

peter@computer:~$ git clone https://github.com/[...]/MyPrivateRepo
Cloning into 'MyPrivateRepo'...
Username for 'https://github.com': [...]
Password for 'https://[...]@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/[...]/MyPrivateRepo/'

Если я отключу двухфакторную аутентификацию, я смогу использовать ее, как раньше:

peter@computer:~$ git clone https://github.com/[...]/MyPrivateRepo
Cloning into 'MyPrivateRepo'...
Username for 'https://github.com': [...]
Password for 'https://[...]@github.com': 
remote: Counting objects: 147, done.
remote: Total 147 (delta 0), reused 0 (delta 0), pack-reused 147
Receiving objects: 100% (147/147), 22.70 KiB | 0 bytes/s, done.
Resolving deltas: 100% (87/87), done.
Checking connectivity... done.

Я знаю, что могу использовать SSH, и все работает, но есть ли способ сохранить двухфакторную аутентификацию, сохранив при этом возможность использовать GitHub через HTTPS, например, отправив токен аутентификации с моим запросом?

Ответы:


156

Узнайте, как это исправить здесь:

https://github.com/blog/1614-two-factor-authentication#how-does-it-work-for-command-line-git

Как это работает для командной строки Git?

Если вы используете SSH для аутентификации Git, отдыхайте спокойно: вам не нужно ничего делать. Если вы используете HTTPS Git, вместо ввода пароля введите токен личного доступа. Их можно создать, перейдя на страницу личных токенов доступа .


2
Вы можете добавить токен в файл .netrc, как я нашел в следующем тексте , чтобы сделать аутентификацию автоматической.
Мартин Вулстенхалм,

1
Но я использую ssh, при извлечении из github он также предлагает мне ввести пароль и имя пользователя, почему это? Спасибо за ответ!
starkshang

3
все еще он не работает для меня после ввода токена доступа в Mac после sudo git clone .... система запрашивает имя пользователя и пароль в поле пароля. Я ввожу токен, но он не работает для меня. получаю ту же ошибку
ojus kulkarni

40
Используйте свой токен в качестве имени пользователя и укажите пустой пароль.
Kotie Smit

Обратите внимание на конечное дополнительное пространство при ручном копировании токена с сайта github (т.е. если вы не используете кнопку копирования на github). Мне потребовалось время, чтобы понять, почему это не сработало для меня.
gmargari

34

Согласно ответу @Nitsew , создайте свой личный токен доступа и используйте свой токен в качестве имени пользователя и введите пустой пароль.

Позже вам не потребуются какие-либо учетные данные для доступа ко всем вашим частным репо.


Где бы вы порекомендовали хранить токен доступа на удаленном сервере?
bdoubleu

2

Для всех, кто боролся, у меня сработало создание токена личного доступа, а затем его использование в качестве имени пользователя И пароля (в открывшейся подсказке).


1

Если в вашем репо включена 2FA. Настоятельно рекомендуем использовать приложение, предоставленное github.com. Вот ссылка: https://desktop.github.com/

После того, как вы его скачали и установили. Следуйте инструкциям, приложение попросит вас ввести одноразовый пароль для входа. После того, как вы ввели одноразовый пароль, теперь вы можете увидеть свое репо / проекты.


помогает только в том случае, если вы используете windows
Ян Тертон,

0

1-й: получить токен персонального доступа. https://github.com/settings/tokens
2nd: Поместите учетную запись и токен. Пример здесь:

$ git push
Username for 'https://github.com':            # Put your GitHub account name
Password for 'https://{USERNAME}@github.com': # Put your Personal access token

Ссылка на то, как создать токен персонального доступа: https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line

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