Vyhledávání na webu

Jak opravit Git, který vždy požaduje přihlašovací údaje pro HTTP(S) autentizaci


Chcete-li získat přístup ke vzdálenému úložišti Git nebo s ním pracovat, můžete použít protokoly SSH nebo HTTP(S); u prvního, pokud jde o soukromá úložiště, můžete jednoduše nakonfigurovat klíče SSH bez přístupové fráze, což vám umožní bezpečně přenášet data bez zadávání uživatelského jména a hesla.

S HTTP(S) vás však každé připojení vyzve k zadání uživatelského jména a hesla (když Git potřebuje ověření pro konkrétní kontext URL) – uživatelé Github to dobře vědí.

V tomto článku vám ukážeme, jak opravit, že Git vždy požaduje uživatelské přihlašovací údaje pro přístup přes HTTP(S). Vysvětlíme různé způsoby, jak zabránit Gitu v opakovaném dotazování na uživatelské jméno a heslo při interakci se vzdáleným úložištěm přes HTTP(S).

Jak nainstalovat Git v Linuxu

Pokud v systému nemáte nainstalovaný balíček Git, spusťte příslušný příkaz pro vaši distribuci Linuxu a nainstalujte jej (v případě potřeby použijte příkaz Sudo).

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]

Zadání uživatelského jména a hesla Git do vzdálené adresy URL

Jak jsme již zmínili dříve, při klonování vzdáleného úložiště Git přes HTTP(S) potřebuje každé připojení uživatelské jméno a heslo jak je znázorněno.

Chcete-li zabránit, aby Git požadoval vaše uživatelské jméno a heslo, můžete do adresy URL zadat přihlašovací údaje, jak je uvedeno na obrázku.


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

Hlavní nevýhodou této metody je, že vaše uživatelské jméno a heslo budou uloženy v příkazu v souboru historie prostředí.

a také v souboru .git/config v místní složce, což představuje bezpečnostní riziko.

cat .git/config

Poznámka: Pro uživatele Github, kteří povolili dvoufaktorové ověřování nebo přistupují k organizaci, která používá SAML jednotné přihlášení, musíte vygenerujte a použijte osobní přístupový token namísto zadávání hesla pro HTTPS Git (jak je uvedeno ve vzorových výstupech v této příručce). Chcete-li vygenerovat osobní přístupový token, přejděte na Github do Nastavení => Nastavení vývojáře => Osobní přístupové tokeny.

Uložení uživatelského jména a hesla vzdáleného úložiště Git na disk

Druhou metodou je použití pomocníka s přihlašovacími údaji Git k uložení uživatelského jména a hesla do prostého souboru na disk, jak je znázorněno.

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

Od této chvíle bude Git při prvním přístupu zapisovat přihlašovací údaje do souboru ~/.git-credentials pro každý kontext adresy URL. Chcete-li zobrazit obsah tohoto souboru, můžete použít příkaz cat, jak je znázorněno na obrázku.

cat  ~/.git-credentials

U následných příkazů pro stejný kontext adresy URL přečte Git vaše uživatelská pověření z výše uvedeného souboru.

Stejně jako předchozí metoda je tento způsob předávání uživatelských pověření do Gitu také nezabezpečený, protože soubor úložiště je nešifrovaný a je chráněn pouze standardními oprávněními souborového systému.

Třetí metoda vysvětlená níže je považována za bezpečnější.

Ukládání uživatelského jména a hesla vzdáleného úložiště Git do mezipaměti

V neposlední řadě můžete také použít pomocníka pro přihlašovací údaje Git k dočasnému uložení přihlašovacích údajů na nějakou dobu do paměti. Chcete-li to provést, zadejte následující příkaz.

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

Po spuštění výše uvedeného příkazu se při prvním pokusu o přístup ke vzdálenému soukromému úložišti Git zeptá na vaše uživatelské jméno a heslo a uloží je na nějakou dobu do paměti.

Výchozí doba ukládání do mezipaměti je 900 sekund (nebo 15 minut), po které vás Git znovu vyzve k zadání uživatelského jména a hesla. Můžete jej změnit následovně (1800 sekund=30 minut nebo 3600 sekund=1 hodina).

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

Další informace o Gitu a pomocníkech s přihlašovacími údaji najdete na jejich manuálových stránkách.

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

Byl tento průvodce užitečný? Dejte nám vědět prostřednictvím formuláře pro zpětnou vazbu níže. Můžete také sdílet jakékoli dotazy nebo myšlenky na toto téma.