Problemer med password i git på kommando linje.

gitlogo

Det er mere populært at bruge en ssh-nøgle i stedet for en adgangskode, når man automatiserer en git-klon fra et gæste-OS. Men hvis du har brug for at angive adgangskoden direkte i konsolkommandoen, tager den denne form:

$ git clone https://<user>:<password>@<gitserver>/<path>/<repo>.git

Hvilket fungerer fint, hvis adgangskoden er almindelig tekst, men hvis den har specialtegn som et udråbstegn, skal du bruge procentkodning som ofte kaldes URL-kodning.

 

!   #   $    &   '   (   )   *   +   ,   /   :   ;   =   ?   @   [   ]
%21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D

For eksempel ved at bruge legitimationsoplysningerne myuser/password! til et github-lager ville se sådan ud:

$ git clone https://myuser:password%[email protected]/myuser/repo.git

Hvis dette er en mappe, der er tilgængelig for alle andre i din gruppe, skal du sørge for, at du ikke efterlader dine legitimationsoplysninger i den eksterne URL.

# check remote URL, ensure password is not still present
git remote -v

# hvis du har brug for at fjerne adgangskoden, skal du blot efterlade bruger-id'et
git remote set-url origin https://[email protected]/myuser.repo.git

Cached Credentials

Hvis du aktivt arbejder på dette lager og ikke ønsker at give denne adgangskode hver gang du udfører et push, kan du angive brugen af en cache og det antal sekunder, den er gyldig:

$ git config --global credential.helper 'cache --timeout=3600'

Hvis du bruger git på Windows og ønsker at bruge Windows credential manager:

> git config --global credential.helper manager

Eller er på Windows og har problemer med legitimationsadministratoren, så kan du bruge et simpelt fillager i stedet.

> git config --global --unset credential.helper
> git config --global credential.helper "store %USERPROFILE%\.git-config"

Proxy

Hvis du har adgang til et eksternt weblager, og din git-klient skal gå gennem en proxy såsom Squid.

git config --global http.proxy http://<squid>:3128

 

REFERENCES

https://gist.github.com/evantoli/f8c23a37eb3558ab8765 (git config options)

http://stackoverflow.com/questions/4565700/specify-private-ssh-key-to-use-when-executing-shell-command-with-or-without-ruby

http://superuser.com/questions/232373/how-to-tell-git-which-private-key-to-use

https://confluence.atlassian.com/bitbucket/set-up-ssh-for-git-728138079.html

https://stackoverflow.com/questions/17659206/git-push-results-in-authentication-failed (expired credentials, enter new)

NOTER

Base client settings

git config --global user.email "<email@host>"
git config --global user.name "<user name>"
git config --global push.default simple
git config --global core.editor vim
git config --global core.autocrlf false
git config --global http.proxy http://<squid>:3128

git config --list
git config --global --list

For at fjerne credential helper hvis credentials er ændret.

git config --global --unset-all credential.helper
git config --unset-all credential.helper

Windows credential manager

> git config --global credential.helper manager
> git credential-manager version

Udløbet login, unset credentials cache

git config --global --unset credential.helper

 

Loading