Jak skonfigurować uwierzytelnianie bez hasła w prywatnym repozytorium GitHub?

Ciągłe powtarzanie tych samych czynności to koszmar każdego programisty, prawda? Jednym z takich nużących zadań jest praca z prywatnymi repozytoriami GitHub. Jeśli szukasz skutecznego sposobu na usprawnienie tego procesu, trafiłeś idealnie! W tym artykule przedstawimy Ci sprawdzone metody, dzięki którym zapomnisz o ciągłym wpisywaniu haseł.

Omówimy tutaj, jak uzyskać dostęp do prywatnego repozytorium GitHub bez konieczności podawania hasła przy każdej interakcji. Bez zbędnych wstępów, przejdźmy od razu do konkretów.

Istnieją dwie główne metody dostępu do repozytoriów GitHub: HTTPS i SSH. Większość użytkowników korzysta z protokołu HTTPS, ale szybko przekonasz się, że nie jest to najwydajniejsze rozwiązanie, zwłaszcza w przypadku prywatnych repozytoriów.

Dostęp do repozytorium obejmuje różne operacje, takie jak klonowanie, wysyłanie (push), pobieranie (pull) i wszystkie inne czynności związane z synchronizacją Twojego lokalnego repozytorium ze zdalnym.

Dostęp do publicznych repozytoriów nie stanowi problemu, ale praca z prywatnymi repozytoriami wymaga uwierzytelnienia. Istnieje kilka sposobów na bezpieczne uwierzytelnienie, a my omówimy je po kolei.

Zacznijmy od metody, którą większość z Was zna…

HTTPS – standardowa, ale uciążliwa metoda

Jeśli korzystasz z HTTPS, prawdopodobnie wiesz, na czym polega problem i dlaczego szukasz innych rozwiązań. Szybko przeanalizujmy, jak wygląda dostęp do prywatnego repozytorium za pomocą HTTPS:

  • Skopiuj adres URL swojego prywatnego repozytorium.

Prywatne repozytorium GitHub

  • Otwórz terminal (lub wiersz poleceń) na swoim komputerze.
  • Użyj polecenia git clone, wklejając skopiowany adres URL repozytorium.
  • W miejscu „link” wklej swój link do prywatnego repozytorium.
  • System poprosi Cię o uwierzytelnienie, czyli podanie danych do logowania na GitHubie.
  • Najpierw zostaniesz poproszony o wprowadzenie nazwy użytkownika. Wpisz ją i naciśnij Enter.

  • Następnie system poprosi Cię o hasło. Wpisz je i naciśnij Enter.

Gratulacje! Sklonowałeś prywatne repozytorium metodą HTTPS. Teraz, po wprowadzeniu zmian w repozytorium, wykonaj zatwierdzenie (commit) i wyślij (push) zmiany do zdalnego repozytorium.

Co zauważyłeś?

Tak, system ponownie prosi o uwierzytelnienie!

Czyż ciągłe wpisywanie danych uwierzytelniających nie jest wyjątkowo uciążliwe?

Oczywiście, że tak!

Wpisywanie danych logowania za każdym razem, gdy pracujemy z prywatnym repozytorium, jest czasochłonne i spowalnia pracę. Na szczęście istnieją na to sposoby. Najlepszym z nich jest wykorzystanie SSH. Przyjrzyjmy się jednak najpierw alternatywnym rozwiązaniom.

Konfiguracja pliku .git

Wszystkie informacje dotyczące wersji naszego repozytorium przechowywane są w ukrytym folderze .git. Wewnątrz tego folderu znajduje się plik konfiguracyjny, który pozwala na dostosowanie ustawień. Zazwyczaj nie jest to jednak zalecana metoda.

Możemy sklonować prywatne repozytorium, dodając nazwę użytkownika i hasło bezpośrednio w adresie URL repozytorium w następujący sposób:

git clone https://<strong>username:password</strong>@github.com/<strong>username</strong>/<strong>repository_name</strong>.git

Zaktualizuj nazwę użytkownika, hasło i nazwę_repozytorium, używając swoich danych. Ponieważ podaliśmy dane uwierzytelniające w adresie URL, system nie poprosi o ponowne logowanie.

Wykorzystajmy tę metodę do aktualizacji konfiguracji repozytorium i pozbądźmy się uciążliwego uwierzytelniania, modyfikując adres URL:

  • Otwórz folder .git w sklonowanym repozytorium.

  • Znajdź plik o nazwie config i otwórz go w wybranym edytorze tekstu.
  • Powinieneś znaleźć linię z adresem URL repozytorium.

  • Zaktualizuj adres URL, dodając nazwę użytkownika i hasło tak, jak pokazano powyżej.

Teraz, po wprowadzeniu zmian, zatwierdź je i wyślij do zdalnego repozytorium (push).

Co zauważyłeś?

Tym razem system nie powinien pytać o Twoje dane logowania do GitHub. Problem rozwiązany! Poprzez zmianę konfiguracji repozytorium uniknęliśmy powtarzalnego procesu logowania.

Należy jednak zauważyć, że to rozwiązanie nie jest bezpieczne, ponieważ ujawniasz swoje dane uwierzytelniające. Ponadto, ta metoda nie będzie działać, jeśli Twoje hasło zawiera znak „@”.

Ze względu na poważne wady tego rozwiązania, lepiej je pominąć i przejść do następnej metody.

Credential Helper

credential.helper to narzędzie, które umożliwia zapisanie danych uwierzytelniających w pliku ~/.git-credentials.

Gdy podasz dane logowania po raz pierwszy, zostaną one zapisane. Podczas kolejnych prób dostępu do prywatnego repozytorium, system nie poprosi o dane uwierzytelniające, o ile są one zapisane w pliku ~/git-credentials. Zobaczmy, jak to działa krok po kroku:

  • Najpierw musimy aktywować opcję przechowywania danych uwierzytelniających, używając polecenia git config credential.helper store.
  • Po aktywacji spróbuj uzyskać dostęp do prywatnego repozytorium, podając nazwę użytkownika i hasło.
  • Po wprowadzeniu danych logowania zostaną one zapisane w pliku ~/.git-credentials.

Teraz, wykonaj standardowy proces: wprowadź zmiany, zatwierdź je i wyślij (push). Jeżeli wykonałeś powyższe kroki prawidłowo, system nie powinien prosić o dane uwierzytelniające.

Wszystko działa poprawnie…

Co zrobić, jeśli chcesz zachować dane uwierzytelniające tylko przez 4 godziny?

credential.helper pozwala na tymczasowe przechowywanie danych uwierzytelniających przez określony czas. Zamiast polecenia store użyjemy opcji cache.

Domyślnie cache przechowuje dane uwierzytelniające przez 15 minut. Po tym czasie Git ponownie poprosi o dane logowania. Możemy jednak zmienić domyślny czas za pomocą polecenia:

git config credential.helper 'cache --timeout={czas_w_sekundach}'

Pamiętaj, aby podać czas w sekundach. Przejdźmy do praktyki:

  • Najpierw musimy aktywować opcję buforowania naszych poświadczeń za pomocą polecenia git config credential.helper cache.
  • Uzyskaj dostęp do prywatnego repozytorium, podając nazwę użytkownika i hasło.
  • Po podaniu danych logowania GitHub, będą one przechowywane w pamięci podręcznej przez zdefiniowany czas.

Teraz wprowadź zmiany, zatwierdź i wyślij (push). System nie poprosi o dane uwierzytelniające, ponieważ wcześniej skonfigurowaliśmy ich buforowanie.

Pokazane polecenia działają dla repozytorium zainicjowanego przez Git. Możemy zaktualizować konfigurację Git globalnie, dla wszystkich projektów, dodając flagę --global do powyższych poleceń.

Osobiste tokeny dostępu

Osobiste tokeny dostępu (Personal Access Tokens – PAT) służą do udzielania dostępu do API GitHub. Działają podobnie do tokenów OAuth i mogą być używane do podstawowego uwierzytelniania zamiast hasła. Sprawdźmy, jak wykorzystać tokeny do rozwiązania problemu logowania:

  • Zaloguj się na swoje konto GitHub.
  • Przejdź do Ustawień (Settings).

  • Z lewego panelu nawigacyjnego przejdź do ustawień Developer (Developer settings).

  • Kliknij Personal access tokens, aby przejść do docelowej strony. Zobaczysz listę swoich tokenów.

  • Kliknij „Generate new token”, aby utworzyć nowy token.

  • Wprowadź opis tokenu (Note). Opis powinien pomóc Ci w identyfikacji tokena w przyszłości.

  • Wybierz uprawnienia dla tokena. Programy korzystające z tokena będą miały dostęp do wybranych uprawnień. W naszym przypadku wybierz „repo”.

  • Przewiń na dół i kliknij przycisk „Generate token”.

  • Wygenerowany token zostanie wyświetlony tylko raz! Skopiuj go i zapisz w bezpiecznym miejscu. Możesz skorzystać z menedżera haseł.

  • Utworzyliśmy osobisty token dostępu.
  • Teraz użyjemy go do uzyskania dostępu do prywatnego repozytorium.
  • Zaktualizuj adres URL w pliku .git/config, zmieniając go na: https://{personal_access_token}@github.com/hafeezulkareem/private_repository.git.

Spróbuj uzyskać dostęp do prywatnego repozytorium.

Czy system poprosił o uwierzytelnienie?

Nie, system nie powinien prosić o uwierzytelnienie, dopóki token jest aktywny. Przejdźmy do ostatniego sposobu rozwiązania problemu.

SSH – metoda preferowana

SSH służy do uwierzytelniania. Szczegółowe informacje o SSH znajdziesz w dokumentacji GitHub: tutaj.

Idea jest prosta: wygeneruj klucz SSH, dodaj go do swojego konta GitHub i ciesz się uwierzytelnianiem bez hasła.

Przyjrzyjmy się krok po kroku:

  • Otwórz terminal (lub wiersz poleceń).
  • Wpisz polecenie ssh-keygen -t rsa, aby wygenerować nowy klucz SSH.
  • System zapyta o katalog do zapisu klucza. Naciśnij Enter, aby użyć domyślnego katalogu, lub wskaż inny.

  • Teraz należy wprowadzić hasło, aby zabezpieczyć klucz SSH (opcjonalne).
    • Jeśli dodasz hasło do klucza SSH, będziesz musiał je podać przy każdym włączeniu systemu.
    • Jeśli nie dodasz hasła, nie będziesz musiał go podawać.

  • Wprowadź hasło ponownie, aby je potwierdzić.

  • Na koniec zostanie wygenerowany nowy klucz SSH.

Wygenerowaliśmy nowy klucz SSH. Zostaną utworzone dwa pliki (jeśli ścieżka zapisu została zmieniona, nazwy plików również mogą być inne).

Aby połączyć się z kontem GitHub, musimy skopiować zawartość pliku z rozszerzeniem .pub do ustawień konta GitHub. W tym przypadku będzie to plik id_rsa.pub.

  • Zaloguj się na swoje konto GitHub.
  • Otwórz Ustawienia (Settings).

  • Kliknij „SSH and GPG keys”.

  • Kliknij „New SSH key”, aby dodać nowo wygenerowany klucz SSH.

  • Przejdziesz do kolejnego ekranu:

  • Wprowadź opis (title) klucza SSH. Każdy system powinien mieć unikatowy klucz, dlatego dobrą praktyką jest używanie nazwy systemu.
  • Po wybraniu opisu skopiuj i wklej zawartość pliku .pub do pola tekstowego.

  • Na koniec naciśnij przycisk „Add SSH key” i potwierdź dodanie hasłem GitHub.
  • Nowo dodany klucz SSH będzie wyglądał następująco:

Dodaliśmy wygenerowany klucz SSH do GitHub. Musimy teraz uwierzytelnić połączenie SSH, aby móc korzystać z uwierzytelniania bez hasła. Wpisz w terminalu polecenie:

ssh -T [email protected]

System poprosi o potwierdzenie. Potwierdź. To wszystko.

Teraz sklonuj swoje prywatne repozytorium. Tym razem system nie powinien prosić o uwierzytelnienie.

Wprowadź zmiany, zatwierdź je i wyślij (push). Brawo! Nie będziesz już musiał podawać danych logowania. Miłej pracy!

Podsumowanie

Uff! Omówiliśmy kilka metod dostępu do prywatnych repozytoriów bez ciągłego wpisywania danych logowania. Możesz wykorzystać dowolną z nich, jednak najlepszą i najczęściej zalecaną metodą jest uwierzytelnianie przez SSH.

Wybór metody zależy od Twoich preferencji. Nie ma jednej obowiązującej zasady, ale większość firm stosuje uwierzytelnianie SSH, ponieważ jest bezpieczne i oszczędza czas. Pamiętaj, aby zawsze chronić swoje dane uwierzytelniające.

Życzymy udanego programowania! 🙂