Połączenie z Git za pomocą SSH
Wraz z rozwojem umiejętności w programowaniu, oraz prowadzeniem pierwszych projektów spotkacie się z pojęciem klucza SSH. Jeżeli już spotkaliście się z tym terminem, na pewno naszło was pytanie czym owe klucze są, do czego są potrzebne, kiedy je używać i jak je stworzyć. W tym artykule postaram Wam się to wszystko wyjaśnić.
Klucze SSH -inaczej Secure Shell Key są poświadczeniami dostępu używanymi w protokole SSH i stanowią podstawę nowoczesnych platform infrastruktury usług programistycznych takich jak Git, GitHub, AWS, Google Cloud itp.
Zasadniczo klucze SSH są metodą uwierzytelniania używaną do uzyskania dostępu do szyfrowanego połączenia między systemami, a następnie wykorzystania tego połączenia do zarządzania systemem zdalnym.
Do czego wykorzystywany jest protokół SSH i po co nam w pracy z Github
Obecnie protokół SSH jest szeroko stosowany do zdalnego logowania z jednego systemu do drugiego. Na W dobie dzisiejszych czasów i pracy zdalnej jest to ważnym aspektem. Aby móc korzystać z protokołu SSH, należy zainstalować kilka programów. Na nasze potrzeby użyjemy go do połączenia z GitHub. Spytacie ale po co to wszystko? Do tej pory w celu komunikacji mogliśmy uzyskać dostęp do naszego konta podając login i hasło. Działo się tak, przy każdej próbie wprowadzenia zmian na repozytorium zdalnym. Po pierwsze stosujemy go w celu zwiększenia bezpieczeństwa autoryzując urządzenie nie jak w poprzednim wypadku kiedy login działa na różnych urządzeniach. Po drugie dla naszej wygody, aby za każdym razem go nie wprowadzać.
Czym są klucze SSH?
Klucze SSH są dostępne w wielu rozmiarach, najpopularniejszym wyborem jest 2048 bitowe szyfrowanie RSA, które jest porównywalne z hasłem o długości 617 cyfr*1 . W systemach Windows można wygenerować własną parę kluczy SSH, pobierjąc i używjąc klienta SSH, takiego jak PuTTY. Natomiast w systemach Linux możliwe jest wygenerowanie pary kluczy za pomocą terminala.
Klucze SSH zawsze występują w parach, a każda para składa się z klucza prywatnego (bez rozszerzenia lub *ppk – które oznacza, że klucz prywatny jest zgodny z formatem PuTTY) i klucza publicznego (*.pub). Kto lub co posiada te klucze, określa typ pary kluczy SSH. Jeżeli klucz prywatny i publiczny jest posiadany przez użytkownika określa się je jako klucze użytkownika. Na nasze potrzeby do połączenia z Github skupimy się właśnie na tym rodzaju klucza.
Jak wygenerować klucz SSH?
Tak jak opisałam powyżej będzie potrzebne nam zainstalowanie dodatkowego oprogramowania w postaci Git dla Windows. W chwili pisania tego artykułu jest to wersja 2.32 dostępna na stronie git-scm.com zawiera on w sobie narzędzie ssh-keygen umożliwiające generowanie kluczy.
Pierwszą rzeczą, którą musimy uczynić jest otwarcie konsoli git oraz wpisanie następującej komendy.
ssh-keygen -t rsa -b 2048 -C "email_konta_git@domain.pl"
Jak widzimy komenda posiada parę opcji, aby trochę to rozjaśnić omówmy ich znaczenie :
- -t : precyzuje typ generowanego klucza dla naszych potrzeb będzie to klucz RSA, który wpisujemy bezpośrednio po niej
- -b bity: określa liczbę bitów w utworzonym kluczu
- -C: Dodaje niestandardowy komentarz do klucza (który zostanie dołączony na końcu klucza publicznego) w naszym przypadku będzie to adres email.
Po zatwierdzeniu komendy w następnym kroku zostaniemy poproszeni o wskazanie miejsca docelowego zapisu wygenerowanych kluczy.
Enter a file in which to save the key (C:\Users\%UserName%/.ssh/id_rsa):
Najlepszym rozwiązaniem jest zatwierdzenie poprzez naciśnięcie klawisz Enter, nastąpi wtedy zapis wygenerowanych kluczy w lokalizacji domyślnej. Zostaną one zapisane w tym momencie w folderze systemowym profilu użytkownika. Jeżeli z jakiś przyczyn nie chcesz zapisywać swoich kluczy w tym folderze w tym kroku musisz podać nazwę docelowej ścieżki w której mają zostać zapisane klucze.
W kolejnym kroku, który jest już ostatnim zostaniemy poproszeni o hasło szyfrujące nasz wygenerowany klucz tzw passphrase
, jest ono opcjonalne. Podanie go jest przydatne gdy do systemu na którym wygenerowaliśmy klucz mają dostęp osoby trzecie i chcemy zabezpieczyć go przed niepożądanym użyciem. Jeżeli nie chcemy wprowadzać hasła pomijamy ten krok naciskając klawisz enter jeżeli natomiast chcemy wprowadzić hasło, będziemy musieli podawać je przy każdej próbie połączenia.
Po prawidłowym wygenerowaniu kluczy SSH, jeżeli nie zmieniliśmy podczas generowania docelowego miejsca zapisu w ścieżce C:\Users\%User%.ssh\
powinny znajdować się dwa pliki id_rsa oraz id_rsa.pub
Dodanie wygenerowanego klucza SSH do konta Github
Gdy mamy już świeżo wygenerowane klucze, następnym krokiem będzie dodanie klucza publicznego do naszego konta Github.
1. Pierwsze co musimy zrobić to przejść do folderu w którym wygenerowaliśmy klucz w tym wypadku będzie to C:\Users\%User%.ssh
oraz edytorem tekstowym typu notatnik lub Notepad++ otworzyć plik o nazwie id_rsa.pub oraz skopiować całą jego zawartość do schowka, ponieważ będzie on nam za moment potrzebny.
2. Kiedy mamy już skopiowany klucz publiczny, musimy zalogować się na nasze konto Github. Po zalogowaniu na konto do którego chcemy aby był przypięty klucz SSH, przechodzimy do zakładki settings.
3. następnie z menu wybieramy SSH and GPG keys.
4. Klikamy w Nowy klucz SSH
5. W tym kroku do uzupełnienia, będziemy mieć dwa pola title oraz key. W pierwszym z nich możemy dowolnie określić nazwę zapisywanego klucza, bardziej interesuje nas drugie pole do którego wklejamy klucz publiczny skopiowany wcześniej z pliku rsa_id.pub. Na ten moment nie pozostaje nam już nic innego jak naciśnięcie przycisku dodaj klucz SSH.
Sprawdzenie połączenia z Github
Test prawidłowego połączenia możemy sprawdzić za pomocą następującej komendy
ssh -T git@github.com
Jeżeli zrobiliśmy wszystko poprawnie otrzymamy komunikat:
Hi! You've sucessfully authenticated, but GitHub does not provide shell access.
Natomiast jeżeli w którymś kroku popełniliśmy błąd otrzymamy taki komunikat:
The authenticity of host 'github.com can't be established.
RSA key fingerprint is SHA256:sd34SDSd3msadm&64sdad3244234nnjerwUWYEbansb348m.
Are you sure you want to continue connecting (yes/no/[fingerprint])?yes
Warning: Permanently added 'github.com,140.82.121.3' (RSA) to the list of known hosts.
git@github.com: Permission denied (publickey).
To już wszystko co będzie nam potrzebne do wygenerowania oraz zapisania klucza w konfiguracji naszego konta Github, w celu uzyskania połączenia poprzez SSH. Jeżeli podbał Ci się artykuł lub chcesz się podzielić swoimi uwagami proszę o komentarz lub udostępnienie.
Brak komentarzy