Tal y como está el patio, tras habilitarse la posibilidad de utilizar un doble factor de autenticación en GitHub he activado dicha posibilidad en mi cuenta.

En principio está muy bien y funciona sin problemas pero ¿cómo utilizar 2FA con GIT para subir a GitHub?

Recordar un usuario y una contraseña no es complicado pero las credenciales con su longitud y combinaciones “extrambóticas” de caracteres son algo más complicadas ¿no os parece?

Por fortuna contamos con el anillo de claves (keyring) para guardar y gestionar nuestras credenciales de GitHub fácilmente.

Consideraciones

Supondremos que:

A modo de referencia, dejo indicados los permisos otorgados al token para poder acceder con GIT desde la terminal usando credenciales

Usando el ‘keyring’

Aunque siempre podríamos habilitar el cacheo de credenciales en GIT, no me apetecía tener almacenado en texto claro las credenciales dentro del directorio del proyecto así que opté por buscar alguna solución que permitiese almacenar la clave de acceso en el anillo de claves de Linux y, como era de suponer, existe dicha posibilidad

Desde la versión 1.8 de Git se puede acceder a los keyrings tanto de Windows como de Gnome así que ¡manos a la obra!

Instalando

Lo primero que hago es comprobr que tengo instalado el ‘helper’ instalado lanzando un

git help -a | grep credential-

NOTA: si no lo tuvieses puedes instalarlo utilizando el paquete libgnome-keyring (lo he probado en Arch Linux, agradecería me confirmasen su existencia los usuarios de otras distribuciones)

Compilando

Sorprendentemente, el paquete libgnome-keyring incluye el código fuente para ser compilado

sudo make –directory=/usr/share/git/credential/gnome-keyring

NOTA: la ruta /usr/share/git/credential/gnome-keyring difiere levemente según la distribución (yo he usado la de Arch, avisa si tienes problemas o aporta la solución para evitar problemas a otros usuarios… ten por seguro que te agradeceremos la aportación )

Configurando

Sólo nos queda decirle a GIT que utilice el anillo de claves para guardar las credenciales que introduzcamos, para ello lanzamos un

git config –global credential.helper /usr/share/git/credential/gnome- keyring /git-credential-gnome- keyring

NOTA: como mi equipo sólo lo uso yo, voy a definir que use las credenciales a nivel global (mediante el parámetro –global). Si es compartido, sírvete quitar el parámetro –global

Usando

La próxima vez que realices una acción que requiera autenticación (p.e. un push) te pedirá el usuario (como siempre) y una contraseña… en este caso usa la credencial en lugar de la contraseña habitual (en caso contrario te dará errores de autenticación en la terminal y te puedes volver loco hasta descubrir qué está ocurriendo… ¡Estás avisado! 😉 )

Comprobando

Una vez que logres acceder sin problemas a tu repositorio quedará almacenado en el anillo de claves (a salvo de ojos indiscretos)

Para comprobar (y si no tienes una herramienta similar) te recomiendo instalar seahorse.

Buscando entre las claves almacenadas, encontraremos la credencial para nuestro repositorio.

Conclusión

Truco que te permitirá acceder desde la terminal usando GIT a tus repositorios almacenando las credenciales de forma segura en el anillo de claves de nuestro sistema.

Y tú…