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.