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

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

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.exes, он запрашивает мое имя пользователя. Но Portable Git не запрашивает имя пользователя. Смотрите следующий скриншот:

Сердцевидный персонаж - это просто ^C так что игнорируй это.

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

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

3 ответа

Решение

Что касается 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 секунд:

двухфакторная секретная строка

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

Конечно, первый клиент, который будет использовать это GAuth на вашем телефоне или Android.

GAuth на Android

Это означает, что вам не нужно ждать 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|your@email.address|your2factorkey|0|0
sqlite> .quit
#exit

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

Код восстановления

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


Зашифруй свой _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@email.com>"
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://VonC@github.com/VonC/git/'  <=====

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

Персональный токен

Этот токен не требует двухфакторной аутентификации: вы можете использовать его в качестве пароля в своем _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 в Windows), которая включает sed,


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

Я рекомендую онлайн хранилище учетных данных, например https://lastpass.com/

Вам необходимо сохранить:

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

LastPass

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

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

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

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

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

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

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

Другие вопросы по тегам