Logowanie do git (Github) przy pomocy SSH

Czas czytania: 5 minut

Jeśli tworzysz jakieś większy projekt, z pewnością spotkałeś się z czymś takim jak git. Powiedziałbym, że znajomość tego narzędzia jest nieodzowna nawet wtedy, gdy pracujesz samemu. W momencie zatrudnienia do rozwoju programu większej ilości osób, git staje się wręcz podstawowym narzędziem pracy i współdzielenia wyników pracy. Czymże natomiast jest SSH – drugie kluczowe pojęcie poruszane w tytule? Temat SSH rozwijaliśmy już wiele razy. Uczyliśmy się o tym, jak wykonać podstawową konfigurację SSH. Dowiedzieliśmy się także, jak zamienić żmudną ochronę hasłową na coś wygodniejszego – klucze SSH. (Jeśli chcesz sobie przypomnieć jak skonfigurować logowanie do serwera SSH za pomocą certyfikatu, odwiedź to miejsce). Do czego możemy wykorzystać SSH przy gicie? Mianowicie – do uproszczenia sobie życia. Wykorzystamy klucze SSH do autoryzacji.

Co chcemy osiągnąć?

Klonując repozytorium, pobierając zmiany lub „wypychając” je na serwer z pewnością spotykasz się z potrzebą wpisania loginu i hasła. Niby nie jest to uciążliwa rzecz. Ot – kilka literek czy innych znaków specjalnych naciśniętych na klawiaturze. Gorzej, jeśli twoje hasło jest skomplikowane a ilość operacji wymagających interakcji z serwerem git – duża. Wtedy ciągłe wpisywanie loginu i hasła staje się męczące i irytujące. Poziom irytacji podnosi dodatkowo fakt, iż wprowadzając hasło możemy się pomylić. Komunikat „Authentication failed” może doprowadzić do wściekłości.

Nieudana autoryzacja github
Nieudana autoryzacja do Github – coś, co doprowadziło mnie do wściekłości, a zarazem napisania tego artykułu

Dlatego drogi czytelniku chcę oszczędzić ci wyrywania włosów z głowy i poprowadzić cię przez proces konfiguracji autoryzacji za pomocą kluczy SSH. Czym są klucze SSH oraz jaka jest zasada działania tego typu autoryzacji możesz dowiedzieć się czytając ten wpis. My postaramy się wykorzystać te niebanalne osiągnięcie ludzkości do uproszczenia życia programisty w jeszcze jednej sferze życia.

Zaczynamy konfigurację

Generowanie kluczy SSH

Na samym początku musimy wygenerować parę kluczy SSH. Nie jest to trudne zadanie. Będziemy to robili bardzo podobnie jak w tym miejscu. (W artykule zostanie przypomniany proces generowania klucza w systemie Linux. Jeśli pracujesz na systemie Windows, zajrzyj do wspomnianego wcześniej artykułu w którym ten wątek jest wyjaśniony).
Służy do tego polecenie:

ssh-keygen -t rsa -b 4096 -C "karol221-10@hotmail.com"

Przełącznik t decyduje o tym, jakiego rodzaju klucz chcemy wygenerować. Po literce b wpisujemy rozmiar klucza. Duże C pozwala natomiast na dodanie komentarza do klucza, które opisuje jego zastosowanie. Najlepiej podać tu adres email, za pomocą którego logujemy się do platformy Github.

UWAGA!!!
Jeśli używasz autoryzacji SSH za pomocą certyfikatu w jakimś innym miejscu (np.: do logowania do serwera VPS) nie generuj nowej pary kluczy. Jeśli nadpiszesz stary plik id_rsa, możesz utracić dostęp do usługi. Jeśli znajdujesz się w takiej sytuacji, możesz:

  • użyć istniejącej pary kluczy do autoryzacji gita w platformie GitHub
  • wygenerować nową parę kluczy i zapisać ją do innego pliku

Aby klucz był używany, musisz go dodać do programu ssh-agent. Możesz to zrobić za pomocą poniższego polecenia:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/private_key

Pierwsza linijka uruchamia program ssh-agent, który pozwala na „śledzenie wykorzystania kluczy”. Dzięki temu gdy raz podamy passphrase za pomocą której zaszyfrowany jest klucz, system operacyjny będzie to pamiętał. (Operację dodawania klucza do ssh-agent będziesz musiał powtórzyć po restarcie systemu. Istnieje sposób na permanentne dodanie klucza, ale wymaga on modyfikacji plików konfiguracyjnych SSH (przejdź tutaj)

Utworzenie klucza powinno zakończyć się następującym rezultatem:

Dodanie kluczy do konta GitHub

Dużymi krokami zbliżamy się do najważniejszego etapu – dodania świeżutkich, pachnących kluczy do naszego konta na platformie GitHub.

Klucz publiczny jest bardzo duży. Musimy go przepisać do specjalnego okienka w przeglądarce internetowej. Z pewnością nie uśmiecha ci się przepisywanie kilkuset różnych cyfr i liter. Dlatego użyjemy małego wspomagacza w postaci programu xclip. Możemy go zainstalować za pomocą polecenia:

sudo apt-get install xclip

Zawartość klucza publicznego możemy skopiować do schowka za pomocą polecenia:

xclip -sel clip < ~/.ssh/github_private.pub

Składnia jest na tyle prosta że raczej nie trzeba jej tłumaczyć literka po literce. ~/.ssh/github_private.pub to lokalizacja klucza publicznego.

Krok 1

Logujemy się na platformę GitHub i przechodzimy do ustawień konta. (Settings)

Aby przejść ustawień, klikamy ikonkę naszego avatara i wybieramy Settings

Krok 2

W panelu ustawień wybieramy opcję SSH and GPG keys. Jak widzimy na screenie, do mojego konta nie są dodane żadne klucze. Aby dodać klucz SSH, klikamy przycisk New SSH Key.

Krok 3

Wpisujemy tytuł naszego klucza. Może być dowolny (np.: Komputer w domu). W pole key wklejamy aktualną zawartość schowka wypełnioną przez narzędzie xclip.

Na zakończenie GitHub poprosi nas o potwierdzenie operacji hasłem.

Ostatnia uwaga

Jeśli masz jakieś repozytorium i spróbujesz wykonać operację pull/push zauważysz, że git dalej pyta o hasło. O co kaman? Nie bój się, to nic strasznego. Po prostu musisz zapamiętać, żeby teraz klonować repozytorium nie za pomocą https, a za pomocą SSH.

Klonując repozytorium ukazuje ci się pewnie widok podobny jak na powyższym screenie. Abyśmy zrobili użytek z dobrego narzędzia, jakim jest SSH musisz kliknąć niebieski link „Use SSH”.

Aby wykorzystać SSH, okienko z linkiem do klonowania musi wyglądać tak jak na screenie powyżej. Jeśli sklonujesz repozytorium za pomocą SSH, git już nigdy nie zapyta cię o hasło 🙂

Dzięki za lekturę 🙂

Twoja lektura nie polegała na tym ze przewinąłeś scrollem do tego momentu, prawda? Niezależnie od tego jak odpowiesz zachęcam cię do polubienia mojego fanpage’a, dzięki czemu będziesz informowany na bieżąco o nowych artykułach. Jeśli strona naprawdę ci się podoba i naprawdę nie możesz się doczekać kolejnego wpisu, kliknij ten dziwny czerwony dzwonek w lewym dolnym rogu ekranu. Dzięki temu uruchomisz machinę powiadomień, która zadba o to, abyś został poinformowany o nowym artykule natychmiast 🙂

Gdybyś miał jakieś uwagi, zachęcam do napisania komentarza i podzielenia się swoją opinią 🙂 Tymczasem powodzenia i do następnego razu 🙂

3 komentarze do “Logowanie do git (Github) przy pomocy SSH

  1. Wojtek Odpowiedz

    Hej, mam taki problem gdy próbuję przesłać coś do gita.

    Author identity unknown

    *** Please tell me who you are.

    Run

    git config –global user.email „you@example.com”
    git config –global user.name „Your Name”

    to set your account’s default identity.
    Omit –global to set the identity only in this repository.

    fatal: unable to auto-detect email address (got 'Zygmunt@DOM.(none)’)

    P.S
    wysyłam po artykule z SSH.

    • Karol Autor wpisuOdpowiedz

      Tak jak sugeruje komunikat, należy ustawić email i nazwę, która będzie się wyświetlała dla wykonywanych commitów. Należy to zrobić za pomocą sugerowanych poleceń.

      git config –global user.email „you@example.com”
      git config –global user.name „Your Name”

  2. Magda Odpowiedz

    mój terminal chce login i hasło, ale w haśle nie jestem w stanie nic wpisać. Już oprócz domyślnego zainstalowałam ConEmu, sugerowanego na kursie, ale to nic nie dało- problem jest ten sam. Szukałam rozwiązania sama, ale bujam się z tym już kilka godzin i jestem coraz bardziej z resztą materiału bo utknęłam na samym początku. Hilfe.

Skomentuj Karol Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany.