accediendo a git protegido por 2fa

Y un «anillo» para controlarlas a todas…


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

permisos repositorio github 2fa

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-

almacenar contraseñas git en gnome-keyring

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! 😉 )

problemas usuario clave git desde la terminal con autenticación en dos pasos

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.

almacenar credenciales github en el anillo de claves keyring

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ú…

  • ¿Usas la doble autenticación (2FA) de GitHub?
  • ¿Almacenas las credenciales como texto plano (en el directorio de tu proyecto) o usas el keyring?
  • ¿Eres más de acceso por ssh a los repositorios GIT?

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.