Cómo arreglar que Git siempre solicite credenciales de usuario para la autenticación HTTP (S)


Para acceder o trabajar con un repositorio Git remoto, puede usar los protocolos SSH o HTTP (S); con el primero, cuando se trata de repositorios privados, simplemente puede configurar las claves SSH sin una frase de contraseña, lo que le permite transferir datos de forma segura sin escribir su nombre de usuario y contraseña.

Sin embargo, con HTTP (S), cada conexión le pedirá que ingrese su nombre de usuario y contraseña (cuando Git necesita autenticación para un contexto de URL en particular); los usuarios de Github lo saben bien.

En este artículo, le mostraremos cómo arreglar Git siempre solicitando credenciales de usuario para acceder a través de HTTP (S). Explicaremos diferentes formas de evitar que Git solicite repetidamente el nombre de usuario y la contraseña cuando interactúa con un repositorio remoto a través de HTTP (S).

Cómo instalar Git en Linux

Si no tiene el paquete Git instalado en su sistema, ejecute el comando apropiado para su distribución de Linux para instalarlo (use el comando Sudo donde sea necesario).

$ sudo apt install git      [On Debian/Ubuntu]
# yum install git           [On CentOS/RHEL/Fedora]
$ sudo zypper install git   [On OpenSuse]
$ sudo pacman -S git        [On Arch Linux]

Introducción de nombre de usuario y contraseña de Git en URL remota

Como mencionamos anteriormente, al clonar un repositorio Git remoto a través de HTTP (S), cada conexión necesita un nombre de usuario y una contraseña como se muestra.

Para evitar que Git le solicite su nombre de usuario y contraseña, puede ingresar las credenciales de inicio de sesión en la URL como se muestra.

$ sudo git clone https://username:[email protected]/username/repo_name.git
OR
$ sudo git clone https://username:[email protected]/username/repo_name.git local_folder

El principal inconveniente de este método es que su nombre de usuario y contraseña se guardarán en el comando en el archivo de historial de Shell.

así como en el archivo .git/config en la carpeta local, que presenta un riesgo de seguridad.

$ cat .git/config

Nota: Para los usuarios de Github que han habilitado la autenticación de dos factores, o están accediendo a una organización que usa inicio de sesión único SAML, deben generar y usar un token de acceso personal en lugar de ingresar su contraseña para HTTPS Git (como se muestra en los resultados de muestra en esta guía). Para generar un token de acceso personal, en Github, vaya a Configuración u003d> Configuración de desarrollador u003d> Tokens de acceso personal.

Guardar el nombre de usuario y la contraseña del repositorio Git remoto en el disco

El segundo método es utilizar el asistente de credenciales de Git para guardar su nombre de usuario y contraseña en un archivo sin formato en el disco como se muestra.

$ git config credential.helper store				
OR
$ git config --global credential.helper store		

A partir de ahora, Git escribirá las credenciales en el archivo ~/.git-credentials para cada contexto de URL, cuando se acceda por primera vez. Para ver el contenido de este archivo, puede usar el comando cat como se muestra.

$ cat  ~/.git-credentials

Para los comandos posteriores para el mismo contexto de URL, Git leerá sus credenciales de usuario del archivo anterior.

Al igual que el método anterior, esta forma de pasar las credenciales de usuario a Git tampoco es segura ya que el archivo de almacenamiento no está encriptado y está protegido solo por permisos estándar del sistema de archivos.

El tercer método que se explica a continuación se considera más seguro.

Almacenamiento en caché del nombre de usuario y la contraseña del repositorio Git remoto en la memoria

Por último, pero no menos importante, también puede utilizar el asistente de credenciales de Git para guardar temporalmente sus credenciales en la memoria durante algún tiempo. Para hacer eso, emita el siguiente comando.

$ git config credential.helper cache
OR
$ git config --global credential.helper cache

Después de ejecutar el comando anterior, cuando intente acceder a un repositorio privado remoto por primera vez, Git le pedirá su nombre de usuario y contraseña y los guardará en la memoria durante algún tiempo.

El tiempo de almacenamiento en caché predeterminado es de 900 segundos (o 15 minutos), después de lo cual Git le pedirá que ingrese su nombre de usuario y contraseña nuevamente. Puede cambiarlo de la siguiente manera (1800 segundos u003d 30 minutos o 3600 segundos u003d 1 hora).

$ git config --global credential.helper 'cache --timeout=18000'
OR
$ git config --global credential.helper 'cache --timeout=36000'

Para obtener más información sobre Git y los ayudantes de credenciales, consulte sus páginas de manual.

$ man git
$ man git-credential-cache
$ man git-credential-store

¿Fue útil esta guía? Háganos saber a través del formulario de comentarios a continuación. También puede compartir sus preguntas o pensamientos sobre este tema.