Desde agosto de 2021 ya no se puede usar el usuario y contraseña para hacer operaciones desde la consola y es necesario usar un token personal.
Evidentemente, memorizar un token (o varios) es una locura, con lo que cachearlo de una forma segura es la más adecuado.
Existen varias formas de lograrlo. Se puede usar Github CLI, pero personalmente prefiero usar git que es más genérico.
Creando el token
Lo primero que hace falta es crear un token. Sobre nuestra foto de perfil pinchamos y seguimos esta ruta:
Settings > Developer settings > Personal access tokens
Le pongo un nombre al nuevo token, la caducidad y marco sólo el scope "repo"
En mi caso me creo uno por dispositivo, servicio u ocasión (como en un ordenador compartido para una demo) y así puedo tener más controlado los que están activos y en caso de creer que está comprometido puedo revocarlo. Así que le pongo el nombre del dispositivo y en mi ordenador trabajo habitual lo pongo sin caducidad.
Al crear el token lo copiamos, porque luego desaparece, y lo usamos para comprobar que funciona en el mismo lugar que antes introducíamos la contraseña.
Hacemos la prueba clonando un repositorio usando HTTP.
Cacheando las credenciales
Hay varios métodos para guardar credenciales con la ayuda de git.
Mi preferido es configurar el archivo para almacenarlas para mi usuario en mi home con el comando:
Una vez configurado, se utiliza la primera vez el nombre de usuario y el token como contraseña y ya estará almacenado.
Si lo hacemos global hay que tener en cuenta que almacenará, en claro, todas las credenciales que usemos en todos los repositorios (github, gitlab, etc...). Se puede ver lo que ha guardado simplemente abriendo el fichero.
Si por cualquier razón pensáramos que el archivo está comprometido simplemente se anula el token en github (ojo si contiene más credenciales). Si ya no quisiéramos usar un fichero para el cacheo es buena idea borrarlo.