Приложения GitHub, HTTPS и Mac

Я знаю, что SSH в GitHub не вызывает проблем (ни одно имя пользователя/пароль набирать каждый раз, то есть я), но мне нужно использовать HTTPS для моего репо.

Теперь я git init отредактировал репо, я сделал, я сделал git remote add origin https://github.com/user/repo.git, как было предложено GitHub.

Я собирался сделать git push -u origin master: сначала он предложил мне имя пользователя и пароль, а затем ответил:

remote: Anonymous access to user/repo.git denied.
fatal: Authentication failed for 'https://github.com/user/repo.git/'

Я на 300% уверен, что набрал правильный пароль (и я попробовал еще пару раз в любом случае). Я поиграл в Google, и тут я попробовал свой последний шанс: установил приложение GitHub для Mac. Я ввел свои учетные данные, ввел 2-факторный код аутентификации, который они мне отправили, и попытался снова нажать: на этот раз он сработал.

Почему? Что делает приложение GitHub за кулисами? Это как-то связано с 2-факторным auth?

В любом случае, я бы не смог загрузить приложение на каждой машине, которую я установил, возможно, автоматизируя этот процесс с помощью script.

Ответ 1

Ваш пароль GitHub не будет работать, если вы активировали двухфакторную аутентификацию.

Вам нужно сгенерировать токен личного доступа, как я объясняю в настройке Git клиентов, таких как GitHub для Windows, чтобы не запрашивать аутентификацию.

Этот длинный (40 символов) пароль будет работать как ваш пароль GitHub, не требуя второй аутентификации.

Разница между токеном доступа PAT (Personnal Access) и вашей учетной записью паролей Github:

  • Это не требуется второй шаг, но:
  • это сложнее простого пароля (не нужно помнить)
  • вы можете создать столько, сколько хотите (по одному для каждого компьютера, с которого вы, например, обращаетесь к GitHub)
  • вы можете отменить его в любое время (проще, чем изменить свой пароль GitHub).

И вы можете зашифровать свои учетные данные GitHub в файле .netrc.gpg, как я иллюстрирую в "Есть ли способ пропустить ввод пароля при использовании https://github".
Я считаю, что намного превосходит механизм кэширования памяти (например, credential-osxkeychain), поскольку вам не нужно вводить пароль GitHub (длинный и сложный токен) на каждом сеансе. Вы вводите только парольную фразу вашего ключа gpg, для этого идентификатора входа/маркера GitHub, или для любых других учетных данных, которые вы зашифровали в вашем ~/.netrc.gpg файле.