Windows Git Asks for Login Continuously

To access or work with a remote Git repository, you can either use SSH or HTTP(S) protocols; with the former, when it comes to private repositories, you can simply configure SSH keys without a passphrase which allows you to securely transfer data without typing in your username and password.

However, with HTTP(S), every connection will prompt you to enter your username and password (when Git needs authentication for a particular URL context) – Github users know this well.

In this article, we will show you how to fix Git always asking for user credentials for access over HTTP(S). We will explain different ways of preventing Git from repeatedly prompting for username and password when interacting with a remote repository over HTTP(S).

How to Install Git in Linux

If you don't have the Git package installed on your system, run the appropriate command for your Linux distribution to install it (use the Sudo command where necessary).

$ 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]        

Entering Git Username and Password in Remote URL

As we had mentioned earlier on, when cloning a remote Git repository over HTTP(S), every connection needs a username and password as shown.

Clone Remote Git Repository
Clone Remote Git Repository

To prevent Git from asking for your username and password, you can enter the login credentials in the URL as shown.

$ 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        
Add Git Credentials in URL
Add Git Credentials in URL

The main drawback of this method that your username and password will be saved in the command in the Shell history file.

View Shell History
View Shell History

as well as in the .git/config file under the local folder, which posses a security risk.

$ cat .git/config        
View Git Credentials in Config File
View Git Credentials in Config File

Note: For Github users who have enabled two-factor authentication, or are accessing an organization that uses SAML single sign-on, you must generate and use a personal access token instead of entering your password for HTTPS Git (as shown in the sample outputs in this guide). To generate a personal access token, in Github, go to Settings => Developer Settings => Personal access tokens.

Saving Remote Git Repository Username and Password on Disk

The second method is to use the Git credentials helper to save your username and password in a plain file on disk as shown.

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

From now on, Git will write credentials to the ~/.git-credentials file for each URL context, when accessed for the first time. To view the content of this file, you can use the cat command as shown.

$ cat  ~/.git-credentials        
View Saved Git Credentials on Disk
View Saved Git Credentials on Disk

For subsequent commands for the same URL context, Git will read your user credentials from the above file.

Just like the previous method, this way of passing user credentials to Git is also unsecure since the storage file is unencrypted and it is protected only by standard filesystem permissions.

The third method explained below, is considered more secure.

Caching Remote Git Repository Username and Password in Memory

Last but not least, you can also use the Git credentials helper to temporarily save your credentials in memory for some time. To do that, issue the following command.

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

After running the above command, when you try to access a remote private repository for the first time, Git will ask for your username and password and save it in memory for some time.

Cache Git Credentials in Memory
Cache Git Credentials in Memory

The default caching time is 900 seconds (or 15 minutes), after which Git will prompt you to enter your username and password again. You can change it as follows (1800 seconds = 30 minutes or 3600 seconds = 1hour).

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

For more information on Git and credentials helpers, see their man pages.

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

Was this guide helpful? Let us know via the feedback form below. You can as well share any questions or thoughts about this topic.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

caryhumque.blogspot.com

Source: https://www.tecmint.com/fix-git-user-credentials-for-https/

0 Response to "Windows Git Asks for Login Continuously"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel