Configure los clientes de Git, como GitHub para Windows, para no solicitar authentication

He instalado GitHub para Windows y también GitExtensions y tengo múltiples versiones de git.exe en mi path.

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 

Ahora, cuando hago git push origin master con cualquiera de los últimos tres git.exe , me pide mi nombre de usuario. Pero el Portable Git no solicita un nombre de usuario. Ver la siguiente captura de pantalla:

enter image description here

El personaje en forma de corazón es solo un ^C así que ignóralo.

¿Cómo se soluciona la authentication en este caso? En definitiva, quiero que los últimos tres Gits no soliciten autorización. ¿Como es eso posible?

Encontré dos files adicionales en GitHub's Git pero dudo que importen en absoluto:

enter image description here

Para GitHub para Windows, Paul Betts ( personal de GitHub ) restring a todos que G4W ya incluye una cnetworkingencial de ayuda (basado en CryptProtect y supongo que la function CryptProtectData )
Ver su respuesta a continuación .

Para aquellos que no usan G4W, sigue leyendo.


Para agregar a mi respuesta anterior (al presionar a GitHub a través de la console / command-line):

Un file como ~/.netrc (en Unix) o %HOME%/_netrc (en Windows) puede ayudarlo a evitar ingresar su cnetworkingencial por cada git push que realice en GitHub .

Puede almacenar tantas cnetworkingenciales que necesite en un file netrc .
(para GitHub u otros proveedores de hosting repo)
Pero:

  • no desea almacenar su count de contraseña principal de GitHub
  • usted no quiere esos en un file de text sin formatting.

Las siguientes secciones abordan esos problemas:


Habilite la authentication de dos factores (2FA) en su count de GitHub

(3 de septiembre de 2013)

Configure 2FA a través de una aplicación , siempre a través de una aplicación, nunca a través de un SMS de text, si puede evitarlo.

La razón es que, a través de ese process de activación, tiene acceso a su key secreta de dos factores , que se usa para generar la authentication de segundo factor cada 30 segundos:

Cadena secreta de dos factores

De esta forma, puede dirigirse a cualquier cliente GAuth ( Google Authenticator ) , ingresar esa misma key secreta 2FA y ver exactamente el mismo código que obtendría a través del post SMS.
Excepto que, si no tienes service telefónico, todavía funciona;)

Por supuesto, el primer cliente que usará es GAuth en su teléfono Android o su iPhone.

GAuth en Android

Eso significa que no tiene que esperar un SMS, y mantiene su 2FA en su teléfono.

Sin embargo, tener su key secreta le permite no estar limitado a un cliente en su teléfono.
Puede ir a cualquier otro cliente, como:

  • JAuth , un hermoso cliente de escritorio de dos factores, ( codeon GitHub )
  • html5-google-authenticator : una página web de cliente de GAuth Authenticator donde puede ver su token generado cada 30 segundos, como lo vería en su teléfono o mediante SMS.
  • una bandeja del sistema de escritorio
  • una extensión de browser (como gauth-authenticator for FireFox)

Para todos esos clientes (en su teléfono con GAuth, o con un cliente de escritorio o una página web), necesitará su key secreta de dos factores .

Si activó su 2FA a través de SMS:

  • no sabes tu key secreta
  • no puedes usar ningún otro cliente de GAuth
  • está limitado a recibir su token a través de su teléfono (si tiene service telefónico y / o si tiene su teléfono)

Nota: si ha agregado una key en su cliente Gauth en Android, sin haber memorizado primero dicha key secreta, no todo está perdido .
(pero necesita un teléfono rooteado)

 $ 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 

No olvides get y save los códigos de recuperación asociados (en la sección Account Settings de la count de tu count de GitHub ):

Código de recuperación

(Consulte también la última sección sobre dónde save esos códigos)


Cifre su file _netrc

(ver cnetworkingencial helper netrc con git1.8.3 + : gpg encryption)

Necesita encriptar en ese file al less esas dos cnetworkingenciales:

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

A continuación, conserve solo ~/.netrc.gpg o %HOME%/_netrc.gpg

Pero, si habilita la nueva authentication de dos factores descrita anteriormente, ' xxxx ' no será su count de GitHub: consulte la siguiente sección sobre "Ficha de acceso personal".


Generar un token de acceso personal

No podrá presionar con su contraseña de GitHub si activó 2FA.

Anonymous access to user/repo.git denied

Esto es lo que vería (la parte gpg es porque uso el cnetworkingencial de cnetworkingencial 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/' <===== 

Vaya a la sección Applications de su count de GitHub y genere un token de acceso personal :

Token personal

Ese token no requerirá una authentication de dos factores : puede usarlo como contraseña en su file _netrc , y podrá simplemente presionar a GitHub.

Pero la diferencia con la contraseña principal de su count GitHub es:
Puede revocar un token de acceso personal (y generar uno nuevo), sin modificar la contraseña principal.

Si ha encryption su contraseña principal de GitHub en su file ~/.netrc.gpg , puede replacela con su nueva ficha personal:

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

En múltiples líneas para la legibilidad:

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

Eso funciona incluso en Windows, con la ayuda del command GoW (Gnu on Windows) unix, que incluye sed .


Guarde sus cnetworkingenciales de GitHub

Recomiendo un almacenamiento de cnetworkingenciales en línea como lastpass.com

Debes save:

  • Su contraseña de la count de GitHub
  • Su key secreta 2FA
  • Su código de recuperación 2FA
  • Tu token personal

Ultimo pase

Si está usando GitHub para Windows, todo lo que necesita hacer es:

  1. Asegúrese de haber iniciado session en la aplicación GUI al less una vez
  2. Haga clic en el enlace "Git Shell"

GitHub ya resolvió este problema en la command-line, tanto para los controles remotos basados ​​en HTTPS como SSH.

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

La sección de caching de passwords dice:

Si no desea usar GitHub para Windows, puede download el asistente para su sistema operativo aquí:

Haga eso y cualquier otro git.exe funcionará sin pedir contraseña. 🙂