Búsqueda de sitios web

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 utilizar los protocolos SSH o HTTP(S); Con el primero, cuando se trata de repositorios privados, simplemente puede configurar claves SSH sin una frase de contraseña, lo que le permite transferir datos de forma segura sin tener que 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 necesite autenticación para un contexto URL particular); los usuarios de Github lo saben bien.

En este artículo, le mostraremos cómo solucionar que Git siempre solicite 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 al interactuar 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 cuando 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]

Ingresando el nombre de usuario y la contraseña de Git en la 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 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 /username/repo_name.git
OR
sudo git clone https://username:[email /username/repo_name.git local_folder

El principal inconveniente de este método es que su nombre de usuario y su 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, lo 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 acceden a una organización que utiliza el inicio de sesión único SAML, deben genere y utilice un token de acceso personal en lugar de ingresar su contraseña para HTTPS Git (como se muestra en los resultados de muestra de esta guía). Para generar un token de acceso personal, en Github, vaya a Configuración => Configuración de desarrollador => Tokens de acceso personal.

Guardar el nombre de usuario y la contraseña del repositorio remoto de Git 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 simple en el disco, como se muestra.

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

De ahora en adelante, Git escribirá las credenciales en el archivo ~/.git-credentials para cada contexto 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 comandos posteriores para el mismo contexto 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á cifrado y está protegido únicamente 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 puedes utilizar el asistente de credenciales de Git para guardar temporalmente tus 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 900 segundos (o 15 minutos), después del cual Git le pedirá que ingrese su nombre de usuario y contraseña nuevamente. Puedes cambiarlo de la siguiente manera (1800 segundos=30 minutos o 3600 segundos=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 asistentes de credenciales, consulte sus páginas de manual.

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

¿Te resultó útil esta guía? Háganos saber a través del formulario de comentarios a continuación. También puede compartir cualquier pregunta o idea sobre este tema.