Jak wygenerować klucz SSH do GitHub i GitLab?
Klucz SSH umożliwia bezpieczne połączenie komputera z platformami takimi jak GitHub i GitLab. Dzięki niemu można klonować repozytorium, pobierać zmiany oraz przesyłać własne commity bez każdorazowego podawania loginu i hasła.
Konfiguracja składa się z kilku prostych etapów. Najpierw należy uruchomić Git Bash i wygenerować klucz SSH. Następnie trzeba uruchomić agenta SSH, dodać do niego klucz prywatny i wkleić klucz publiczny do ustawień konta GitHub lub GitLab.
Na końcu warto od razu skonfigurować dane autora commitów w Git. Dzięki temu środowisko będzie przygotowane zarówno do bezpiecznego łączenia się z repozytorium, jak i prawidłowego zapisywania zmian.
Klucz SSH w skrócie – najważniejsze komendy
Na komputerze z systemem Windows uruchom Git Bash, a następnie wykonaj kolejno:
ssh-keygen -t rsa -b 4096 -C "twoj@mail.com"
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
clip < ~/.ssh/id_rsa.pub
Poszczególne polecenia odpowiadają za:
ssh-keygen– tworzy nowy klucz SSH,eval $(ssh-agent -s)– uruchamia agenta SSH,ssh-add ~/.ssh/id_rsa– dodaje klucz prywatny do agenta,clip < ~/.ssh/id_rsa.pub– kopiuje klucz publiczny do schowka.
Następnie ustaw dane autora commitów:
git config --global user.email "twoj@mail.com"
git config --global user.name "Imię i nazwisko"
Są to dwa osobne elementy konfiguracji. Klucz SSH odpowiada za dostęp do zdalnego repozytorium, natomiast user.name i user.email informują Gita, kto jest autorem commita.
Krok 1. Uruchom Git Bash w systemie Windows
Pierwszym krokiem jest uruchomienie terminala Git Bash. Program jest instalowany razem z pakietem Git for Windows i pozwala wykonywać polecenia znane z systemów Linux oraz macOS.
Otwórz menu Start, wpisz:
Git Bash
a następnie uruchom znalezioną aplikację.
Nie musisz wybierać opcji „Uruchom jako administrator”. W standardowej konfiguracji wystarczy otworzyć program jako zwykły użytkownik.

Krok 2. Wygeneruj klucz SSH
Po uruchomieniu Git Bash wpisz:
ssh-keygen -t rsa -b 4096 -C "twoj@mail.com"
Zamiast twoj@mail.com podaj własny adres e-mail. Najlepiej użyć adresu powiązanego z kontem GitHub lub GitLab, chociaż w tym poleceniu pełni on przede wszystkim funkcję komentarza pomagającego rozpoznać klucz.
Co oznaczają parametry polecenia?
ssh-keygenuruchamia narzędzie służące do generowania kluczy,-t rsawybiera algorytm RSA,-b 4096określa długość klucza na 4096 bitów,-Cdodaje komentarz, najczęściej w postaci adresu e-mail.
Po wykonaniu komendy terminal zapyta, gdzie zapisać wygenerowany klucz:
Enter file in which to save the key
Aby skorzystać z domyślnej lokalizacji, naciśnij Enter. W systemie Windows używającym Git Bash pliki zostaną zazwyczaj zapisane w katalogu:
C:\Users\NazwaUżytkownika\.ssh\
W terminalu Git Bash ta sama lokalizacja może być przedstawiona jako:
/c/Users/NazwaUżytkownika/.ssh/
Domyślnie utworzone zostaną dwa pliki:
id_rsa
id_rsa.pub
Plik id_rsa zawiera klucz prywatny. Nie należy go nikomu udostępniać, przesyłać ani publikować w repozytorium.
Plik id_rsa.pub zawiera klucz publiczny. To właśnie jego zawartość należy później wkleić do ustawień GitHub lub GitLab.
Czy ustawiać hasło do klucza SSH?
Terminal może wyświetlić pytanie:
Enter passphrase
Passphrase to dodatkowe hasło zabezpieczające klucz prywatny. Jego ustawienie zwiększa bezpieczeństwo, szczególnie na laptopie lub komputerze służbowym.
Możesz również nacisnąć Enter i pozostawić pole puste. Terminal poprosi wtedy o ponowne potwierdzenie pustego hasła.
W środowisku prywatnym brak hasła jest wygodniejszy, jednak ustawienie passphrase stanowi bezpieczniejsze rozwiązanie. Później agent SSH może przechowywać odblokowany klucz w pamięci, dzięki czemu hasła nie trzeba wpisywać przy każdej operacji.
Po poprawnym zakończeniu powinien pojawić się komunikat podobny do:
Your identification has been saved in /c/Users/uzytkownik/.ssh/id_rsa
Your public key has been saved in /c/Users/uzytkownik/.ssh/id_rsa.pub

RSA czy Ed25519 – jaki typ klucza wybrać?
Polecenie przedstawione w poradniku generuje klucz RSA o długości 4096 bitów. Taki klucz jest powszechnie obsługiwany i pasuje do kroków widocznych na zrzutach ekranu.
W nowszych środowiskach można również wygenerować klucz Ed25519:
ssh-keygen -t ed25519 -C "twoj@mail.com"
Ed25519 tworzy krótszy klucz i jest często wybierany w nowych konfiguracjach. RSA może być jednak lepszym rozwiązaniem, gdy potrzebna jest zgodność ze starszym systemem lub wewnętrzną infrastrukturą firmy.
W obu przypadkach zasada działania jest taka sama: klucz prywatny pozostaje na komputerze, a klucz publiczny dodaje się do usługi.
Krok 3. Uruchom agenta SSH
Po wygenerowaniu klucza uruchom program ssh-agent:
eval $(ssh-agent -s)
Agent SSH działa w tle i przechowuje aktywne klucze w pamięci. Dzięki temu Git może automatycznie korzystać z odpowiedniego klucza podczas łączenia się ze zdalnym repozytorium.
Po wykonaniu polecenia powinien pojawić się komunikat zawierający numer procesu, na przykład:
Agent pid 1188
Oznacza to, że agent został poprawnie uruchomiony w aktualnej sesji terminala.
Samo wygenerowanie klucza nie powoduje jeszcze automatycznego dodania go do agenta. Dlatego ten krok należy wykonać przed poleceniem ssh-add.
Krok 4. Dodaj klucz prywatny do agenta
Po uruchomieniu agenta wykonaj:
ssh-add ~/.ssh/id_rsa
Polecenie wskazuje agentowi, którego klucza prywatnego ma używać podczas uwierzytelniania.
Symbol ~ oznacza katalog domowy aktualnego użytkownika. Ścieżka:
~/.ssh/id_rsa
prowadzi więc do prywatnej części utworzonej wcześniej pary kluczy.
Jeżeli podczas generowania ustawiono passphrase, terminal poprosi o jego podanie. Po poprawnym dodaniu może pojawić się komunikat:
Identity added
Aby sprawdzić, czy klucz znajduje się w pamięci agenta, użyj:
ssh-add -l

Jeżeli polecenie wyświetli odcisk klucza, konfiguracja przebiegła prawidłowo.
Krok 5. Skopiuj klucz publiczny do schowka
Teraz należy skopiować zawartość pliku id_rsa.pub.
Windows i Git Bash
W systemie Windows wykonaj:
clip < ~/.ssh/id_rsa.pub
Polecenie nie musi wyświetlić żadnego komunikatu. Zawartość klucza publicznego zostanie skopiowana do schowka i będzie gotowa do wklejenia za pomocą skrótu Ctrl + V.
Zwróć uwagę na rozszerzenie .pub. Kopiujesz plik:
id_rsa.pub
a nie prywatny plik id_rsa.
macOS
Na komputerze z macOS użyj funkcji cat – wyświetli klucz do ręcznego skopiowania:
cat ~/.ssh/id_rsa.pub
Linux
W środowisku Linuxowym można użyć cat by wyświetlić klucz i ręcznie go skopiować:
cat ~/.ssh/id_rsa.pub
Następnie zaznacz cały wiersz rozpoczynający się od ssh-rsa albo ssh-ed25519 i skopiuj go ręcznie.
Krok 6. Dodaj klucz SSH do GitLab
Po skopiowaniu klucza zaloguj się do GitLab. Przejdź do ustawień użytkownika, a następnie wybierz:

Access → SSH keys
Na stronie zobaczysz zapisane wcześniej klucze oraz przycisk:
Add new key
Kliknij go, aby otworzyć formularz dodawania nowego klucza.
Key
Wklej klucz publiczny skopiowany wcześniej poleceniem clip, pbcopy, xclip lub wl-copy.
Wartość powinna zaczynać się na przykład od:
ssh-rsa
albo:
ssh-ed25519
Do formularza nie należy wklejać ścieżki do pliku ani jego nazwy. GitLab oczekuje pełnej zawartości klucza publicznego.
Title
Wprowadź nazwę pozwalającą rozpoznać komputer, na przykład:
Omnibook5 (w moim przypadku)
Możesz również użyć nazw:
Laptop prywatny
Komputer służbowy
Windows PC
Czytelny tytuł ułatwia późniejsze usunięcie dostępu konkretnego urządzenia.
Usage type
Do zwykłej pracy z repozytorium możesz pozostawić:
Authentication & Signing
Expiration date
Data wygaśnięcia jest opcjonalna. W środowisku firmowym może być wymagana przez politykę bezpieczeństwa. Jeżeli pozostawisz pole puste, klucz będzie ważny do momentu jego ręcznego usunięcia.
Po uzupełnieniu formularza kliknij:
Add key

Krok 7. Dodaj klucz SSH do GitHub
Jeżeli korzystasz z GitHub, zaloguj się do swojego konta i przejdź do ustawień.
W menu po lewej stronie wybierz:
SSH and GPG keys
Następnie kliknij przycisk dodawania nowego klucza SSH.
W formularzu znajdziesz trzy najważniejsze pola.
Title
Wpisz nazwę urządzenia, na przykład:
Omnibook5
Key type
Dla standardowego dostępu do repozytorium wybierz:
Authentication Key
Key
Wklej pełną zawartość pliku id_rsa.pub.
Na końcu kliknij:
Add SSH key
Platforma może poprosić o ponowne potwierdzenie hasła lub wykonanie dodatkowego uwierzytelnienia.

Krok 8. Sprawdź połączenie z GitHub lub GitLab
Po dodaniu klucza warto sprawdzić, czy uwierzytelnianie działa prawidłowo.
Test połączenia z GitHub
ssh -T git@github.com
Test połączenia z GitLab
ssh -T git@gitlab.com
Podczas pierwszego połączenia może pojawić się pytanie podobne do:
Are you sure you want to continue connecting?
Po upewnieniu się, że adres hosta jest poprawny, wpisz:
yes
Informacja o hoście zostanie zapisana w pliku known_hosts.
Jeżeli konfiguracja działa, platforma wyświetli komunikat potwierdzający uwierzytelnienie. W przypadku GitHub informacja może również wskazywać, że usługa nie oferuje zwykłego dostępu do powłoki. Jest to prawidłowe zachowanie – polecenie służy wyłącznie do sprawdzenia dostępu.
W razie problemów uruchom tryb diagnostyczny:
ssh -vT git@github.com
lub:
ssh -vT git@gitlab.com
Parametr -v pokazuje szczegóły połączenia, w tym informacje o tym, jakie klucze próbuje wykorzystać klient SSH.
Krok 9. Skonfiguruj nazwę i adres e-mail w Git
Po skonfigurowaniu połączenia wykonaj dwie kolejne komendy:
git config --global user.email "twoj@mail.com"
git config --global user.name "Imię i nazwisko"
Przykład:
git config --global user.email "zakubrad@gmail.com"
git config --global user.name "Jakub Radomyski"
Te ustawienia nie służą do logowania na GitHub ani GitLab. Określają dane autora zapisywane w każdym nowym commicie.
Klucz SSH odpowiada na pytanie:
Czy ten komputer ma dostęp do repozytorium?
Konfiguracja Gita odpowiada natomiast na pytanie:
Kto jest autorem tej zmiany?
Warto wykonać obie komendy bezpośrednio po dodaniu klucza. Dzięki temu cały komputer zostanie przygotowany do pracy za jednym razem.
Bez poprawnego klucza możesz nie mieć dostępu do zdalnego repozytorium. Bez danych autora Git może wyświetlić podczas tworzenia pierwszego commita błąd:
Author identity unknown
Parametr --global oznacza, że ustawienia będą używane we wszystkich repozytoriach obsługiwanych przez danego użytkownika na komputerze.

Jak sprawdzić ustawienia Gita?
Nazwę autora sprawdzisz poleceniem:
git config --global user.name
Adres e-mail:
git config --global user.email
Wszystkie ustawienia globalne:
git config --global --list
Możesz także sprawdzić, z jakiego pliku pochodzi konkretne ustawienie:
git config --list --show-origin
Jest to przydatne, gdy wartości globalne i lokalne różnią się od siebie.
Kiedy nie używać parametru --global?
Jeżeli na jednym komputerze korzystasz z konta prywatnego i służbowego, jedna globalna konfiguracja może nie wystarczyć.
W katalogu konkretnego repozytorium można ustawić osobne dane:
git config user.name "Imię i nazwisko"
git config user.email "firmowy@mail.com"
Brak parametru --global oznacza, że wartości zostaną zapisane tylko dla aktualnego projektu.
Lokalne ustawienia mają pierwszeństwo przed globalnymi. Dzięki temu prywatne commity mogą korzystać z prywatnego adresu, a służbowe z adresu firmowego.
Krok 10. Sklonuj repozytorium przez SSH
Po dodaniu klucza i skonfigurowaniu Gita możesz sklonować repozytorium.
Na stronie projektu w GitHub kliknij:
Code
Następnie wybierz zakładkę:
SSH
Skopiowany adres powinien mieć postać:
git@github.com:nazwa-uzytkownika/nazwa-repozytorium.git

Kopiowanie adresu SSH repozytorium na GitHub.
Następnie przejdź do Git Bash i wykonaj:
git clone git@github.com:nazwa-uzytkownika/nazwa-repozytorium.git
Dla GitLab adres może wyglądać tak:
git clone git@gitlab.com:nazwa-uzytkownika/nazwa-repozytorium.git
Repozytorium zostanie pobrane do aktualnego katalogu.
Jak sprawdzić, czy istniejące repozytorium używa SSH?
W katalogu projektu wykonaj:
git remote -v
Jeżeli widzisz adres rozpoczynający się od:
git@github.com:
albo:
git@gitlab.com:
repozytorium korzysta z SSH.
Jeżeli adres rozpoczyna się od:
https://
Git nie będzie używał skonfigurowanego klucza podczas komunikacji z tym repozytorium.
Adres można zmienić za pomocą polecenia:
git remote set-url origin git@github.com:nazwa-uzytkownika/nazwa-repozytorium.git
Dla GitLab:
git remote set-url origin git@gitlab.com:nazwa-uzytkownika/nazwa-repozytorium.git
Poprawna kolejność całej konfiguracji
Najbardziej logiczna kolejność wygląda następująco:
- Uruchom Git Bash.
- Wygeneruj parę kluczy.
- Uruchom agenta SSH.
- Dodaj klucz prywatny do agenta.
- Skopiuj klucz publiczny.
- Wklej go do GitHub lub GitLab.
- Sprawdź połączenie.
- Ustaw nazwę oraz adres e-mail autora.
- Skopiuj adres SSH repozytorium.
- Sklonuj projekt.
Kolejność ma znaczenie. Nie można dodać klucza do agenta, zanim zostanie wygenerowany. Nie można też poprawnie przetestować połączenia, zanim publiczna część nie trafi do ustawień konta.
Konfigurację user.name i user.email można technicznie wykonać wcześniej. Warto jednak zrobić to zaraz po dodaniu klucza, ponieważ oba etapy są częścią przygotowania komputera do pracy.
Najczęstsze błędy podczas konfiguracji klucza SSH
Wklejenie klucza prywatnego zamiast publicznego
Do GitHub lub GitLab należy wkleić wyłącznie zawartość pliku zakończonego rozszerzeniem .pub.
Prawidłowy plik:
id_rsa.pub
Plik, którego nie wolno udostępniać:
id_rsa
Jeżeli klucz prywatny został przypadkowo opublikowany lub wysłany innej osobie, należy uznać go za przejęty. Usuń odpowiadający mu klucz z ustawień konta, wygeneruj nową parę i przestań korzystać ze starej.
Błąd połączenia z agentem
Jeżeli pojawia się komunikat:
Could not open a connection to your authentication agent
ponownie uruchom:
eval $(ssh-agent -s)
a następnie:
ssh-add ~/.ssh/id_rsa
Agent nie zawiera żadnego klucza
Sprawdź listę:
ssh-add -l
Jeżeli pojawi się komunikat o braku tożsamości, dodaj klucz ponownie.
Klucz nie działa w repozytorium
Sprawdź adres zdalnego repozytorium:
git remote -v
Jeżeli projekt używa HTTPS, skonfigurowany klucz SSH nie będzie wykorzystywany przy wykonywaniu poleceń git pull i git push.
Commity nie są przypisywane do profilu
Sprawdź adres autora:
git config user.email
Adres zapisany przy commicie powinien być dodany i zweryfikowany na właściwym koncie GitHub lub GitLab.
Jak chronić klucz prywatny?
Klucz prywatny należy traktować podobnie jak hasło.
Nie należy:
- wysyłać go przez komunikator lub e-mail,
- dodawać do repozytorium,
- umieszczać w pliku projektu,
- kopiować na przypadkowe urządzenia,
- publikować jego zawartości w internecie.
Na Linux i macOS można ograniczyć uprawnienia poleceniami:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
Jeżeli komputer zostanie zgubiony albo istnieje podejrzenie wycieku, usuń klucz z konta GitHub lub GitLab i wygeneruj nową parę.
FAQ – najczęstsze pytania o klucze SSH
Czy trzeba generować osobny klucz dla każdego repozytorium?
Nie. Jeden klucz przypisany do konta może służyć do pracy z wieloma repozytoriami, do których użytkownik ma dostęp.
Osobne klucze warto stosować dla różnych urządzeń, kont albo środowisk firmowych.
Czy ten sam klucz można dodać do GitHub i GitLab?
Technicznie można dodać ten sam klucz publiczny do obu usług. Lepszą praktyką w bardziej wymagającym środowisku jest jednak używanie osobnych kluczy, ponieważ ułatwia to zarządzanie dostępem i ich późniejsze unieważnianie.
Czy klucz SSH zastępuje user.name i user.email?
Nie. Klucz służy do uwierzytelniania połączenia, a dane Gita określają autora commita.
Czy polecenie clip działa na Linux i macOS?
Nie. clip jest narzędziem systemu Windows.
Na macOS użyj:
pbcopy < ~/.ssh/id_rsa.pub
Na Linux użyj xclip, wl-copy albo wyświetl zawartość przez cat.
Czy można pozostawić hasło klucza puste?
Tak, ale klucz zabezpieczony passphrase jest bezpieczniejszy. Agent SSH ogranicza niedogodności związane z używaniem dodatkowego hasła.
Dlaczego po zamknięciu Git Bash trzeba ponownie uruchamiać agenta?
Agent uruchomiony poleceniem eval $(ssh-agent -s) jest powiązany z konkretną sesją terminala. Po zamknięciu programu nowa sesja może nie znać wcześniejszych zmiennych agenta.
Można skonfigurować automatyczne uruchamianie agenta, ale sposób zależy od systemu operacyjnego oraz używanego środowiska.
Podsumowanie
Aby skonfigurować dostęp do GitHub lub GitLab, należy wygenerować klucz SSH, uruchomić agenta, dodać do niego klucz prywatny i skopiować klucz publiczny do ustawień konta.
Następnie warto od razu ustawić nazwę i adres e-mail autora w Git. Dzięki temu komputer będzie przygotowany zarówno do bezpiecznego łączenia się ze zdalnym repozytorium, jak i prawidłowego zapisywania commitów.
Ostatnim krokiem jest skopiowanie adresu SSH projektu i użycie polecenia git clone. Po wykonaniu całej konfiguracji codzienna praca z GitHub i GitLab staje się szybsza, bezpieczniejsza i wygodniejsza.
