Wyszukiwanie w witrynie

Jak naprawić błąd Git, który zawsze pyta o dane użytkownika do uwierzytelnienia HTTP(S).


Aby uzyskać dostęp do zdalnego repozytorium Git lub pracować z nim, możesz użyć protokołów SSH lub HTTP(S); w przypadku tych pierwszych, jeśli chodzi o prywatne repozytoria, możesz po prostu skonfigurować klucze SSH bez hasła, co pozwala na bezpieczne przesyłanie danych bez wpisywania nazwy użytkownika i hasła.

Jednak w przypadku HTTP(S) przy każdym połączeniu zostaniesz poproszony o podanie nazwy użytkownika i hasła (kiedy Git potrzebuje uwierzytelnienia dla określonego kontekstu adresu URL) – użytkownicy Githuba o tym dobrze wiedzą.

W tym artykule pokażemy, jak naprawić Git, który zawsze pyta o dane uwierzytelniające użytkownika w celu uzyskania dostępu przez HTTP(S). Wyjaśnimy różne sposoby zapobiegania wielokrotnemu pytaniu Gita o nazwę użytkownika i hasło podczas interakcji ze zdalnym repozytorium za pośrednictwem HTTP(S).

Jak zainstalować Git w systemie Linux

Jeśli nie masz zainstalowanego pakietu Git w swoim systemie, uruchom odpowiednie polecenie dla swojej dystrybucji Linuksa, aby go zainstalować (w razie potrzeby użyj polecenia 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]

Wprowadzanie nazwy użytkownika i hasła Git w zdalnym adresie URL

Jak wspomnieliśmy wcześniej, podczas klonowania zdalnego repozytorium Git przez HTTP(S) każde połączenie wymaga nazwy użytkownika i hasła jak pokazano.

Aby uniemożliwić Git pytanie o Twoją nazwę użytkownika i hasło, możesz wprowadzić dane logowania w adresie URL, jak pokazano.


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

Główną wadą tej metody jest to, że Twoja nazwa użytkownika i hasło zostaną zapisane w poleceniu w pliku historii powłoki.

a także w pliku .git/config w folderze lokalnym, co stwarza ryzyko bezpieczeństwa.

cat .git/config

Uwaga: w przypadku użytkowników Githuba, którzy włączyli uwierzytelnianie dwuskładnikowe lub uzyskują dostęp do organizacji używającej pojedynczego logowania SAML, musisz wygeneruj i użyj osobistego tokena dostępu zamiast wpisywać hasło do HTTPS Git (jak pokazano na przykładowych wynikach w tym przewodniku). Aby wygenerować osobisty token dostępu, w Github przejdź do Ustawienia => Ustawienia programisty => Osobiste tokeny dostępu.

Zapisywanie nazwy użytkownika i hasła zdalnego repozytorium Git na dysku

Druga metoda polega na użyciu pomocnika poświadczeń Git w celu zapisania nazwy użytkownika i hasła w zwykłym pliku na dysku, jak pokazano.

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

Od tej chwili Git będzie zapisywał dane uwierzytelniające w pliku ~/.git-credentials dla każdego kontekstu adresu URL przy pierwszym dostępie. Aby wyświetlić zawartość tego pliku, możesz użyć polecenia cat, jak pokazano.

cat  ~/.git-credentials

W przypadku kolejnych poleceń dla tego samego kontekstu adresu URL Git odczyta dane uwierzytelniające użytkownika z powyższego pliku.

Podobnie jak poprzednia metoda, ten sposób przekazywania poświadczeń użytkownika do Git jest również niepewny, ponieważ plik pamięci nie jest zaszyfrowany i jest chroniony jedynie przez standardowe uprawnienia systemu plików.

Trzecia metoda opisana poniżej jest uważana za bezpieczniejszą.

Buforowanie nazwy użytkownika i hasła zdalnego repozytorium Git w pamięci

Na koniec możesz także użyć pomocnika poświadczeń Git, aby tymczasowo zapisać swoje dane uwierzytelniające w pamięci na jakiś czas. Aby to zrobić, wydaj następujące polecenie.

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

Po uruchomieniu powyższego polecenia i przy pierwszej próbie uzyskania dostępu do zdalnego prywatnego repozytorium Git poprosi Cię o podanie nazwy użytkownika i hasła oraz zapisze je na jakiś czas w pamięci.

Domyślny czas buforowania wynosi 900 sekund (lub 15 minut), po czym Git poprosi Cię o ponowne wprowadzenie nazwy użytkownika i hasła. Można to zmienić w następujący sposób (1800 sekund=30 minut lub 3600 sekund=1 godzina).

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

Więcej informacji o Git i pomocnikach poświadczeń znajdziesz na ich stronach podręcznika.

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

Czy ten przewodnik był pomocny? Daj nam znać za pomocą poniższego formularza opinii. Możesz także podzielić się pytaniami lub przemyśleniami na ten temat.