{"id":1276,"date":"2019-03-17T10:26:18","date_gmt":"2019-03-17T09:26:18","guid":{"rendered":"https:\/\/www.kompikownia.pl\/?p=1276"},"modified":"2019-03-22T20:29:40","modified_gmt":"2019-03-22T19:29:40","slug":"logowanie-do-git-github-przy-pomocy-ssh","status":"publish","type":"post","link":"https:\/\/www.kompikownia.pl\/index.php\/2019\/03\/17\/logowanie-do-git-github-przy-pomocy-ssh\/","title":{"rendered":"Logowanie do git (Github) przy pomocy SSH"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Czas czytania:<\/span> <span class=\"rt-time\">5<\/span> <span class=\"rt-label rt-postfix\">minut<\/span><\/span>\n<p>Je\u015bli tworzysz jakie\u015b wi\u0119kszy projekt, z pewno\u015bci\u0105 spotka\u0142e\u015b si\u0119 z czym\u015b takim jak git. Powiedzia\u0142bym, \u017ce znajomo\u015b\u0107 tego narz\u0119dzia jest nieodzowna nawet wtedy, gdy pracujesz samemu. W momencie zatrudnienia do rozwoju programu wi\u0119kszej ilo\u015bci os\u00f3b, git staje si\u0119 wr\u0119cz podstawowym narz\u0119dziem pracy i wsp\u00f3\u0142dzielenia wynik\u00f3w pracy. Czym\u017ce natomiast jest SSH &#8211; drugie kluczowe poj\u0119cie poruszane w tytule? Temat SSH rozwijali\u015bmy ju\u017c wiele razy. Uczyli\u015bmy si\u0119 o tym, jak wykona\u0107 podstawow\u0105 konfiguracj\u0119 SSH. Dowiedzieli\u015bmy si\u0119 tak\u017ce, jak zamieni\u0107 \u017cmudn\u0105 ochron\u0119 has\u0142ow\u0105 na co\u015b wygodniejszego &#8211; klucze SSH. (Je\u015bli chcesz sobie przypomnie\u0107 jak skonfigurowa\u0107 logowanie do serwera SSH za pomoc\u0105 certyfikatu, <a href=\"https:\/\/www.kompikownia.pl\/index.php\/2018\/11\/22\/ssh-autoryzacja-za-pomoca-klucza-certyfikatu\/\">odwied\u017a to miejsce<\/a>). Do czego mo\u017cemy wykorzysta\u0107 SSH przy gicie? Mianowicie &#8211; do uproszczenia sobie \u017cycia. Wykorzystamy klucze SSH do autoryzacji. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Co chcemy osi\u0105gn\u0105\u0107?<\/h2>\n\n\n\n<p>Klonuj\u0105c repozytorium, pobieraj\u0105c zmiany lub &#8222;wypychaj\u0105c&#8221; je na serwer z pewno\u015bci\u0105 spotykasz si\u0119 z potrzeb\u0105 wpisania loginu i has\u0142a. Niby nie jest to uci\u0105\u017cliwa rzecz. Ot &#8211; kilka literek czy innych znak\u00f3w specjalnych naci\u015bni\u0119tych na klawiaturze. Gorzej, je\u015bli twoje has\u0142o jest skomplikowane a ilo\u015b\u0107 operacji wymagaj\u0105cych interakcji z serwerem git &#8211; du\u017ca. Wtedy ci\u0105g\u0142e wpisywanie loginu i has\u0142a staje si\u0119 m\u0119cz\u0105ce i irytuj\u0105ce. Poziom irytacji podnosi dodatkowo fakt, i\u017c wprowadzaj\u0105c has\u0142o mo\u017cemy si\u0119 pomyli\u0107. Komunikat &#8222;Authentication failed&#8221; mo\u017ce doprowadzi\u0107 do w\u015bciek\u0142o\u015bci. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"599\" height=\"198\" src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/03\/Screenshot_20190316_193916.png\" alt=\"Nieudana autoryzacja github\" class=\"wp-image-1277\"\/><figcaption>Nieudana autoryzacja do Github &#8211; co\u015b, co doprowadzi\u0142o mnie do w\u015bciek\u0142o\u015bci, a zarazem napisania tego artyku\u0142u<\/figcaption><\/figure><\/div>\n\n\n\n<p>Dlatego drogi czytelniku chc\u0119 oszcz\u0119dzi\u0107 ci wyrywania w\u0142os\u00f3w z g\u0142owy i poprowadzi\u0107 ci\u0119 przez proces konfiguracji autoryzacji za pomoc\u0105 kluczy SSH. Czym s\u0105 klucze SSH oraz jaka jest zasada dzia\u0142ania tego typu autoryzacji mo\u017cesz dowiedzie\u0107 si\u0119 czytaj\u0105c <a href=\"https:\/\/www.kompikownia.pl\/index.php\/2018\/11\/22\/ssh-autoryzacja-za-pomoca-klucza-certyfikatu\/\">ten wpis<\/a>. My postaramy si\u0119 wykorzysta\u0107 te niebanalne osi\u0105gni\u0119cie ludzko\u015bci do uproszczenia \u017cycia programisty w jeszcze jednej sferze \u017cycia. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zaczynamy konfiguracj\u0119<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Generowanie kluczy SSH<\/h3>\n\n\n\n<p>Na samym pocz\u0105tku musimy wygenerowa\u0107 par\u0119 kluczy SSH. Nie jest to trudne zadanie. B\u0119dziemy to robili bardzo podobnie jak <a href=\"https:\/\/www.kompikownia.pl\/index.php\/2018\/11\/22\/ssh-autoryzacja-za-pomoca-klucza-certyfikatu\/\">w tym miejscu<\/a>. (W artykule zostanie przypomniany proces generowania klucza w systemie Linux. Je\u015bli pracujesz na systemie Windows, zajrzyj do <a href=\"https:\/\/www.kompikownia.pl\/index.php\/2018\/11\/22\/ssh-autoryzacja-za-pomoca-klucza-certyfikatu\/\">wspomnianego wcze\u015bniej artyku\u0142u<\/a> w kt\u00f3rym ten w\u0105tek jest wyja\u015bniony).<br>S\u0142u\u017cy do tego polecenie:<\/p>\n\n\n<div class=\"codecolorer-container bash default\" style=\"overflow:auto;white-space:nowrap;width:90%;\"><div class=\"bash codecolorer\"><span class=\"kw2\">ssh-keygen<\/span> <span class=\"re5\">-t<\/span> rsa <span class=\"re5\">-b<\/span> <span class=\"nu0\">4096<\/span> <span class=\"re5\">-C<\/span> <span class=\"st0\">&quot;karol221-10@hotmail.com&quot;<\/span><\/div><\/div>\n\n\n\n<p>Prze\u0142\u0105cznik t decyduje o tym, jakiego rodzaju klucz chcemy wygenerowa\u0107. Po literce b wpisujemy rozmiar klucza. Du\u017ce C pozwala natomiast na dodanie komentarza do klucza, kt\u00f3re opisuje jego zastosowanie. Najlepiej poda\u0107 tu adres email, za pomoc\u0105 kt\u00f3rego logujemy si\u0119 do platformy Github.<\/p>\n\n\n\n<p class=\"has-text-color has-background has-sitebg-color has-accent-1-background-color\"><strong>UWAGA!!! <\/strong><br>Je\u015bli u\u017cywasz autoryzacji SSH za pomoc\u0105 certyfikatu w jakim\u015b innym miejscu (np.: do logowania do serwera VPS) <strong>nie generuj nowej pary kluczy.<\/strong> Je\u015bli nadpiszesz stary plik id_rsa, mo\u017cesz utraci\u0107 dost\u0119p do us\u0142ugi. Je\u015bli znajdujesz si\u0119 w takiej sytuacji, mo\u017cesz: <\/p>\n\n\n\n<ul><li>u\u017cy\u0107 istniej\u0105cej pary kluczy do autoryzacji gita w platformie GitHub<\/li><li>wygenerowa\u0107 now\u0105 par\u0119 kluczy i zapisa\u0107 j\u0105 do innego pliku<\/li><\/ul>\n\n\n\n<p>Aby klucz by\u0142 u\u017cywany, musisz go doda\u0107 do programu ssh-agent. Mo\u017cesz to zrobi\u0107 za pomoc\u0105 poni\u017cszego polecenia:<\/p>\n\n\n<div class=\"codecolorer-container bash default\" style=\"overflow:auto;white-space:nowrap;width:90%;\"><div class=\"bash codecolorer\"><span class=\"kw3\">eval<\/span> <span class=\"st0\">&quot;<span class=\"es4\">$(ssh-agent -s)<\/span>&quot;<\/span><br \/>\n<span class=\"kw2\">ssh-add<\/span> ~<span class=\"sy0\">\/<\/span>.ssh<span class=\"sy0\">\/<\/span>private_key<\/div><\/div>\n\n\n\n<p>Pierwsza linijka uruchamia program ssh-agent, kt\u00f3ry pozwala na &#8222;\u015bledzenie wykorzystania kluczy&#8221;. Dzi\u0119ki temu gdy raz podamy passphrase za pomoc\u0105 kt\u00f3rej zaszyfrowany jest klucz, system operacyjny b\u0119dzie to pami\u0119ta\u0142. (Operacj\u0119 dodawania klucza do ssh-agent b\u0119dziesz musia\u0142 powt\u00f3rzy\u0107 po restarcie systemu. Istnieje spos\u00f3b na permanentne dodanie klucza, ale wymaga on modyfikacji plik\u00f3w konfiguracyjnych SSH <a href=\"https:\/\/stackoverflow.com\/questions\/3466626\/how-to-permanently-add-a-private-key-with-ssh-add-on-ubuntu\">(przejd\u017a tutaj<\/a>)<\/p>\n\n\n\n<p>Utworzenie klucza powinno zako\u0144czy\u0107 si\u0119 nast\u0119puj\u0105cym rezultatem:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"680\" height=\"298\" src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/03\/Screenshot_20190316_195956.png\" alt=\"\" class=\"wp-image-1279\"\/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Dodanie kluczy do konta GitHub<\/h3>\n\n\n\n<p>Du\u017cymi krokami zbli\u017camy si\u0119 do najwa\u017cniejszego etapu &#8211; dodania \u015bwie\u017cutkich, pachn\u0105cych kluczy do naszego konta na platformie GitHub. <\/p>\n\n\n\n<p>Klucz publiczny jest bardzo du\u017cy. Musimy go przepisa\u0107 do specjalnego okienka w przegl\u0105darce internetowej. Z pewno\u015bci\u0105 nie u\u015bmiecha ci si\u0119 przepisywanie kilkuset r\u00f3\u017cnych cyfr i liter. Dlatego u\u017cyjemy ma\u0142ego wspomagacza w postaci programu xclip. Mo\u017cemy go zainstalowa\u0107 za pomoc\u0105 polecenia: <\/p>\n\n\n<div class=\"codecolorer-container bash default\" style=\"overflow:auto;white-space:nowrap;width:90%;\"><div class=\"bash codecolorer\"><span class=\"kw2\">sudo<\/span> <span class=\"kw2\">apt-get install<\/span> xclip<\/div><\/div>\n\n\n\n<p>Zawarto\u015b\u0107 klucza publicznego mo\u017cemy skopiowa\u0107 do schowka za pomoc\u0105 polecenia:<\/p>\n\n\n\n\n<div class=\"codecolorer-container bash default\" style=\"overflow:auto;white-space:nowrap;width:90%;\"><div class=\"bash codecolorer\">xclip <span class=\"re5\">-sel<\/span> clip <span class=\"sy0\">&lt;<\/span> ~<span class=\"sy0\">\/<\/span>.ssh<span class=\"sy0\">\/<\/span>github_private.pub<\/div><\/div>\n\n\n\n\n<p>Sk\u0142adnia jest na tyle prosta \u017ce raczej nie trzeba jej t\u0142umaczy\u0107 literka po literce. ~\/.ssh\/github_private.pub to lokalizacja klucza publicznego. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Krok 1<\/h4>\n\n\n\n<p>Logujemy si\u0119 na platform\u0119 GitHub i przechodzimy do ustawie\u0144 konta. (Settings)<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"907\" height=\"464\" src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/03\/image.png\" alt=\"\" class=\"wp-image-1280\"\/><figcaption>Aby przej\u015b\u0107 ustawie\u0144, klikamy ikonk\u0119 naszego avatara i wybieramy Settings<br><\/figcaption><\/figure><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Krok 2<\/h4>\n\n\n\n<p>W panelu ustawie\u0144 wybieramy opcj\u0119 SSH and GPG keys. Jak widzimy na screenie, do mojego konta nie s\u0105 dodane \u017cadne klucze. Aby doda\u0107 klucz SSH, klikamy przycisk New SSH Key.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1415\" height=\"760\" src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/03\/image-1.png\" alt=\"\" class=\"wp-image-1281\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Krok 3<\/h4>\n\n\n\n<p>Wpisujemy tytu\u0142 naszego klucza. Mo\u017ce by\u0107 dowolny (np.: Komputer w domu). W pole key wklejamy aktualn\u0105 zawarto\u015b\u0107 schowka wype\u0142nion\u0105 przez narz\u0119dzie xclip. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"774\" height=\"421\" src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/03\/image-2.png\" alt=\"\" class=\"wp-image-1282\"\/><\/figure><\/div>\n\n\n\n<p>Na zako\u0144czenie GitHub poprosi nas o potwierdzenie operacji has\u0142em. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ostatnia uwaga<\/h2>\n\n\n\n<p>Je\u015bli masz jakie\u015b repozytorium i spr\u00f3bujesz wykona\u0107 operacj\u0119 pull\/push zauwa\u017cysz, \u017ce git dalej pyta o has\u0142o. O co kaman? Nie b\u00f3j si\u0119, to nic strasznego. Po prostu musisz zapami\u0119ta\u0107, \u017ceby teraz klonowa\u0107 repozytorium nie za pomoc\u0105 https, a za pomoc\u0105 SSH. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"470\" height=\"215\" src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/03\/image-3.png\" alt=\"\" class=\"wp-image-1284\"\/><\/figure><\/div>\n\n\n\n<p>Klonuj\u0105c repozytorium ukazuje ci si\u0119 pewnie widok podobny jak na powy\u017cszym screenie. Aby\u015bmy zrobili u\u017cytek z dobrego narz\u0119dzia, jakim jest SSH musisz klikn\u0105\u0107 niebieski link &#8222;Use SSH&#8221;.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"456\" height=\"230\" src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/03\/image-4.png\" alt=\"\" class=\"wp-image-1285\"\/><\/figure><\/div>\n\n\n\n<p>Aby wykorzysta\u0107 SSH, okienko z linkiem do klonowania musi wygl\u0105da\u0107 tak jak na screenie powy\u017cej. Je\u015bli sklonujesz repozytorium za pomoc\u0105 SSH, git ju\u017c nigdy nie zapyta ci\u0119 o has\u0142o \ud83d\ude42 <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dzi\u0119ki za lektur\u0119 \ud83d\ude42 <\/h2>\n\n\n\n<p>Twoja lektura nie polega\u0142a na tym ze przewin\u0105\u0142e\u015b scrollem do tego momentu, prawda? Niezale\u017cnie od tego jak odpowiesz zach\u0119cam ci\u0119 do polubienia mojego<a href=\"https:\/\/www.facebook.com\/kompikownia\"> fanpage&#8217;a<\/a>, dzi\u0119ki czemu b\u0119dziesz informowany na bie\u017c\u0105co o nowych artyku\u0142ach. Je\u015bli strona naprawd\u0119 ci si\u0119 podoba i naprawd\u0119 nie mo\u017cesz si\u0119 doczeka\u0107 kolejnego wpisu, kliknij ten dziwny czerwony dzwonek w lewym dolnym rogu ekranu. Dzi\u0119ki temu uruchomisz machin\u0119 powiadomie\u0144, kt\u00f3ra zadba o to, aby\u015b zosta\u0142 poinformowany o nowym artykule natychmiast \ud83d\ude42 <\/p>\n\n\n\n<p>Gdyby\u015b mia\u0142 jakie\u015b uwagi, zach\u0119cam do napisania komentarza i podzielenia si\u0119 swoj\u0105 opini\u0105 \ud83d\ude42 Tymczasem powodzenia i do nast\u0119pnego razu \ud83d\ude42 <\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Czas czytania:<\/span> <span class=\"rt-time\">5<\/span> <span class=\"rt-label rt-postfix\">minut<\/span><\/span> Je\u015bli tworzysz jakie\u015b wi\u0119kszy projekt, z pewno\u015bci\u0105 spotka\u0142e\u015b si\u0119 z czym\u015b takim jak git. Powiedzia\u0142bym, \u017ce znajomo\u015b\u0107 tego narz\u0119dzia jest nieodzowna nawet wtedy, gdy pracujesz samemu. W momencie zatrudnienia do &#8230;<\/p>\n","protected":false},"author":1,"featured_media":1280,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[27,29],"tags":[62,63],"_links":{"self":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts\/1276"}],"collection":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/comments?post=1276"}],"version-history":[{"count":16,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts\/1276\/revisions"}],"predecessor-version":[{"id":1367,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts\/1276\/revisions\/1367"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/media\/1280"}],"wp:attachment":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/media?parent=1276"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/categories?post=1276"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/tags?post=1276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}