Github z obsługą kluczy SSH
Kategoria: Artykuły, etykiety: git, github, ssh
Dodany: 2015-02-17 21:07
(zmodyfikowany: 2015-02-17 21:47)
Przez: morfik
Wyświetleń: 12272
W końcu przyszedł czas na eksperymenty z githubem. Jakby nie patrzeć, do tej pory jedyne co potrafiłem zrobić w przypadku samego gita, to wydać jedno polecenie -- "git clone". Wszelkie inne rzeczy, choć nie było ich wcale tak dużo, robiłem via panel www, co trochę było upierdliwe. Postanowiłem nauczyć obsługi gita i nieco uprościć sobie życie. Jeśli chodzi o samą naukę, to tutaj jest dostępny dość obszerny pdf (prawie 500 stron): http://git-scm.com/book/en/v2 . Nie będę tutaj przerabiał wyżej podlinkowanej książki, bo w sumie jeszcze jej nie przeczytałem, tylko zajmę się ciekawym tematem, czyli implementacją kluczy SSH, tak by operować na gicie bez zbędnych haseł.
Przede wszystkim potrzebne będą nam klucze SSH ale cały proces ich tworzenia również nie zostanie uwzględniony w tym artykule -- to zostało zrobione już tutaj, ewentualnie można jeszcze skorzystać ze ściągawki dostępnej w helpie githuba. Dalsza część artykułu zakłada, że mamy już do dyspozycji jakiś klucz SSH. Jeśli nie mamy konta na githabie, to przydałoby się je również utworzyć.
Mając klucz SSH i konto, możemy przejść do powiązania tych dwóch rzeczy ze sobą. W tym celu włazimy w opcje konta i po lewej stronie klikamy w SSH keys:
Teraz klikamy na ADD SSH key (prawy róg) i uzupełniamy pola od nazwy i klucza. Powinno to wyglądać mniej więcej tak:
Po pomyślnym dodaniu klucza powinniśmy zobaczyć go na liście kluczy:
I to w sumie z grubsza jeśli chodzi o konfigurację githuba.
Testujemy czy działa:
morfik:~$ ssh -T git@github.com
Hi morfikov! You've successfully authenticated, but GitHub does not provide shell access.
Teraz wystarczy założyć jakieś repozytorium i możemy przejść do konfiguracji klienta.
Tu oczywiście musimy sobie zainstalować paczkę git -- to jest tekstowy klient. Jeśli komuś nie odpowiada operowanie na konsoli, może skorzystać z graficznego narzędzie co się zwie git-cola .
Mając już swoje własne repozytorium oraz odpowiednie pakiety w systemie, odpalamy terminal i klonujemy to repozytorium:
$ git clone https://github.com/morfikov/conffiles
Cloning into 'conffiles'...
remote: Counting objects: 61, done.
remote: Compressing objects: 100% (29/29), done.
remote: Total 61 (delta 29), reused 58 (delta 29)
Unpacking objects: 100% (61/61), done.
Checking connectivity... done.
By komunikować się z tym repozytorium, potrzebne są odpowiednie adresy, a te można podejrzeć przez:
$ cd conffiles
$ git remote -v
origin https://github.com/morfikov/conffiles (fetch)
origin https://github.com/morfikov/conffiles (push)
I jak widać, jest tutaj link zaczynający się od https i jeśli spróbowalibyśmy zrobić np. push, zostanie wyrzucone zapytanie o użytkownika oraz hasło:
$ git push
Username for 'https://github.com': morfikov
Password for 'https://morfikov@github.com':
I tego właśnie chcemy uniknąć -- raz, że przesyłanie hasła przez sieć wyszło z mody, a dwa, to lepiej nie utrudniać sobie zanadto życia pamiętaniem zbędnych rzeczy.
By pozbyć się hasła, musimy zmienić te dwa powyższe adresy. Nie jest to jakoś specjalnie trudne, jedyne co musimy zrobić to dostosować poniższą linijkę:
$ git remote set-url origin git@github.com:morfikov/conffiles.git
W moim przypadku nazwa użytkownika to morfikov, zaś nazwa repozytorium to conffiles (adres: https://github.com/morfikov/conffiles).
Po odpowiednim dostosowaniu tej powyższej linijki i wklepaniu jej do terminala, adresy powinny ulec zmianie:
$ git remote set-url origin git@github.com:morfikov/conffiles.git
$ git remote -v
origin git@github.com:morfikov/conffiles.git (fetch)
origin git@github.com:morfikov/conffiles.git (push)
Teraz push powinien przejść bez problemu:
$ git push
Everything up-to-date
Jeśli nie chce nam się przechodzić przez proces zmiany linków, możemy sklonować repozytorium w poniższy sposób:
$ git clone git@github.com:morfikov/conffiles.git
Linki zostaną automatycznie ustawione na ssh.