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:
- has activado la autenticación en dos pasos en GitHub
- has generado unas credenciales para poder usarlas desde la línea de comandos
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
git config –global credential.helper /usr/share/git/credential/gnome-keyring/git-credential-gnome-keyring
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ú…
- ¿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?
- …