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

Я установил GitHub для Windows, а также GitExtensions и имею несколько версий git.exe на моем пути.

enter image description here

C:\Users\Rajat\AppData\Local\GitHub\PortableGit_93e8418133eb85e81a81e5e19c272776524496c6\cmd\git.exe
C:\Users\Rajat\AppData\Local\GitHub\PortableGit_93e8418133eb85e81a81e5e19c272776524496c6\bin\git.exe
E:\cygwin\bin\git.exe
C:\Program Files (x86)\Git\cmd\git.exe
C:\Program Files (x86)\Git\bin\git.exe

Теперь, когда я делаю git push origin master с любым из трех последних git.exe s, он запрашивает мое имя пользователя. Но Portable Git не запрашивает имя пользователя. См. Следующий снимок экрана:

enter image description here

Сердечный символ - это просто ^C, поэтому игнорируйте это.

Как проверяется аутентификация в этом случае? В конечном итоге я хочу, чтобы последние три Gits не просили разрешения. Как это возможно?

Я нашел два дополнительных файла в GitHub Git, но я сомневаюсь, что они имеют значение вообще:

enter image description here

Ответ 1

Для GitHub для Windows, Paul Betts (Персонал GitHub) мягко напоминает, что G4W уже включает помощник учетных данных (на основе CryptProtect, и я полагаю, что CryptProtectData функция)
См. его ответ ниже.

Для тех, кто не использует G4W, читайте дальше.


Добавить в мой предыдущий ответ (при нажатии на GitHub через консоль/командную строку):

Файл типа ~/.netrc (в Unix) или %HOME%/_netrc (в Windows) может помочь вам избежать ввода ваших учетных данных для каждого нажатия git, которое вы сделали бы в GitHub.

В файле netrc вы можете сохранить как можно больше учетных данных.
(для GitHub или других хостинг-провайдеров репо)
Но:

  • вы не хотите хранить свою основную учетную запись GitHub
  • вам не нужны файлы в текстовом файле.

В следующих разделах рассматриваются эти проблемы:


Включить двухфакторную аутентификацию (2FA) в вашей учетной записи GitHub

(3 сентября 2013 г.)

Настройте 2FA через приложение, всегда через приложение, а не через текстовое SMS, если вы можете его избежать.

Причина в том, что через этот процесс активации у вас есть доступ к вашему двухфакторному секретному ключу, который используется для генерации аутентификации второго фактора каждые 30 секунд:

two factor secret string

Таким образом вы можете перейти в любой файл GAuth (Google Authenticator), введите тот же секретный ключ 2FA, и см. точный код, который вы получите через SMS-сообщение.
Кроме того, если у вас нет телефонной службы, оно все равно работает;)

Конечно, первым клиентом

Это означает, что вам не нужно ждать SMS, и вы сохраняете свой 2FA на своем телефоне.

Однако наличие вашего секретного ключа позволяет вам не ограничиваться клиентом на вашем телефоне.
Вы можете обратиться к любому другому клиенту, например:

Для всех этих клиентов (на вашем телефоне с помощью GAuth или с помощью настольного клиента или веб-страницы) вам понадобится двухфакторный секретный ключ.

Если вы активировали ваш 2FA через SMS:

  • Вы не знаете свой секретный ключ.
  • вы не можете использовать какой-либо другой клиент GAuth
  • вы ограничены получением вашего токена через ваш телефон (если у вас есть телефон и/или если у вас есть телефон вообще)

Примечание: если вы добавили ключ в свой клиент Gauth на Android, не запомнив первый секретный ключ, все не потеряно.
(но вам нужен корневой телефон, хотя)

$ adb shell
# sqlite3 /data/data/com.google.android.apps.authenticator/databases/databases
sqlite> select * from accounts;
1|[email protected]|your2factorkey|0|0
sqlite> .quit
#exit

Не забудьте получить и затем сохранить связанные коды восстановления (в разделе Account Settings вашей учетной записи GitHub):

Recovery code

(См. также последний раздел о том, где сохранить эти коды)


Зашифруйте файл _netrc

(см. учетная запись помощника netrc с git1.8.3 +: шифрование gpg)

Вам нужно зашифровать в этом файле по крайней мере эти два учетных данных:

machine github.com
login username
password xxxx
protocol https

machine gist.github.com
login username
password xxxx
protocol https

Затем вы сохраняете только ~/.netrc.gpg или %HOME%/_netrc.gpg

Но если вы включите новую двухфакторную аутентификацию, описанную выше, "xxxx" не будет вашей учетной записью GitHub: см. следующий раздел о "Токе персонального доступа".


Создать токен личного доступа

Вы не сможете нажать свой пароль GitHub, если вы активировали 2FA.

Anonymous access to user/repo.git denied

Вот что вы увидите (часть gpg заключается в том, что я использую помощник учетных данных netrc):

C:\Users\VonC\prog\git\git>git push origin
Using GPG to open %HOME%/_netrc.gpg: [gpg2 --decrypt %HOME%/_netrc.gpg]

You need a passphrase to unlock the secret key for
user: "auser <[email protected]>"
2048-bit RSA key, ID A2EF56, created 2012-09-12 (main key ID DC43D6)

remote: Anonymous access to VonC/git.git denied.                      <=====
fatal: Authentication failed for 'https://[email protected]/VonC/git/'  <=====

Итак, перейдите в раздел Developer вашей учетной записи GitHub= Personal access tokens) и создать токен личного доступа:

Personal token

Этот токен не требует двухфакторной аутентификации: вы можете использовать его как пароль в вашем файле _netrc, и вы сможете просто нажать на GitHub.

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

Если вы зашифровали свой основной пароль GitHub в своем файле ~/.netrc.gpg, вы можете заменить его своим новым личным токеном:

gpg -d %HOME%\_netrc.gpg | sed "s/yourPassord/YourPersonalAccessToken/g" | gpg -e -r auser --yes -o %HOME%\_netrc.gpg

В нескольких строках для удобства чтения:

gpg -d %HOME%\_netrc.gpg | 
  sed "s/yourPassord/YourPersonalAccessToken/g" | 
  gpg -e -r auser --yes -o %HOME%\_netrc.gpg

Это работает даже в Windows с помощью unix-подобной команды GoW (Gnu on Windows), которая включает sed.


Сохраните учетные данные GitHub

Я рекомендую хранилище учетных данных в Интернете, например lastpass.com

Вам нужно сохранить:

  • Ваш пароль учетной записи GitHub
  • Секретный ключ 2FA
  • Код восстановления 2FA
  • Ваш персональный токен

LastPass

Ответ 2

Если вы используете GitHub для Windows, все, что вам нужно сделать, это:

  • Убедитесь, что вы вошли в приложение графического интерфейса хотя бы один раз.
  • Нажмите ссылку Git Shell

GitHub уже решил эту проблему для вас в командной строке, как для HTTPS, так и для SSH-пультов

Ответ 3

https://help.github.com/articles/set-up-git

В разделе кэширования паролей говорится:

Если вы не хотите использовать GitHub для Windows, вы можете загрузить помощник для вашей ОС:

Сделайте это, и любой другой git.exe будет работать без запроса пароля.:)