Lekce 10 - Git - Vzdálený repozitář - GitHub a protokoly HTTPS a SSH
V minulé lekci, Git - Kolize mezi větvemi, jsme se zabývali kolizemi při slučování větví.
V dnešním Git tutoriálu si ukážeme práci se vzdáleným repozitářem. Představíme si GitHub, ve kterém si založíme profil. Ukážeme si, jak nastavit Git pro připojení přes protokoly HTTPS a SSH. Pro SSH si vygenerujeme osobní přístupový token a klíč.
Co je to vzdálený repozitář
Vzdálený repozitář (remote repo) je repozitář umístěný na vzdáleném serveru. Po uložení změn do našeho lokálního repozitáře můžeme tyto změny poslat/nahrát na vzdálený server, aby byly dostupné ostatním spolupracovníkům nebo uživatelům. Tím umožníme sdílení a koordinaci práce mezi různými vývojáři.
Vzdálený repozitář jsme si uvedli v lekci Git - Historie a principy.
Ukázky práce se vzdálenými repozitáři si předvedeme na webové platformě GitHub.
GitHub
GitHub je webová platforma pro správu verzí kódu. Umožňuje vývojářům spolupracovat na projektech, sledovat změny v kódu, řešit problémy a sdílet svůj software. GitHub rozšiřuje možnosti Gitu tím, že poskytuje uživatelům prostor pro ukládání repozitářů na svých serverech. Repozitáře na GitHubu jsou úložiště pro projekty, do kterých mohou vývojáři ukládat svůj kód, spravovat změny a vést diskuse o případných vylepšeních nebo chybách.
Využití GitHubu
GitHub nabízí širokou škálu nástrojů a funkcí, které umožňují jednoduchou a efektivní správu projektů, sdílení kódu a spolupráci v reálném čase. Jsou to například:
- Spolupráce a sdílení kódu – Vývojáři mohou pracovat společně na projektech a navrhovat změny pomocí pull requestů.
- Správa verzí a sledování změn – GitHub umožňuje sledovat každou změnu provedenou v kódu.
- Automatizace pomocí integrací – Platforma nabízí integrace s nástroji, jako je CI/CD, pro automatizaci vývoje a nasazení kódu.
- Správa projektů a issues – Vývojáři mohou používat nástroje pro sledování úkolů a problémů v projektu.
- GitHub pages – Umožňují hostovat jednoduché webové stránky, což je užitečné pro prezentaci projektů a dokumentaci.
Vytvoření účtu na GitHubu
Předtím než budeme moci GitHub plně využívat, je třeba mít založený účet. Pokud ho ještě nemáme, pak na stránce GitHub klikneme na Sign up a vytvoříme si jej. Po vytvoření profilu potvrdíme jeho aktivaci prostřednictvím odkazu, který obdržíme na zadaný e-mail.
Dashboard – Domovská stránka
Po úspěšném zaregistrování na GitHubu se ocitneme na domovské stránce neboli dashboardu:
Zde máme k dispozici rychlý přístup do našich repozitářů, výpis aktivit uživatelů, organizací nebo repozitářů, které sledujeme. GitHub nám také nabízí možnost nahlédnout do populárních repozitářů.
Veřejný profil
Nyní si ukážeme, jak zobrazit náš veřejný profil na GitHubu. Přejdeme do horní lišty na pravé straně a klikneme na ikonu s profilovým obrázkem. Tím se otevře rozbalovací menu, které nabízí několik možností, včetně přístupu k našemu profilu:
Klikneme na možnost Your profile. Budeme přesměrováni na náš veřejný profil:
Profil uživatele hraje v interakci s GitHubem klíčovou roli. Poskytuje přehled o aktivitách, repozitářích a projektech, které daný uživatel spravuje nebo do nichž přispívá.
Navigační pole se nám rozšířilo o odkazy na Repositories, Projects, Packages a Stars:
Tyto odkazy nám nabízejí:
- Overview – Zobrazuje základní informace a sumarizaci profilu uživatele.
- Repositories – Zobrazuje seznam všech repozitářů vytvořených nebo naklonovaných uživatelem.
- Projects – Poskytuje přehled všech projektů vytvořených uživatelem.
- Packages – Nabízí přístup k balíčkům uživatele.
- Stars – Zobrazí repozitáře, které uživatel označil hvězdou jako oblíbené.
Nastavení našeho účtu
Do nastavení účtu se dostaneme opětovným kliknutím na ikonu s profilovým obrázkem a výběrem Settings. Zde máme možnost upravovat a konfigurovat různá nastavení spojená s naším účtem a jeho zabezpečením.
Můžeme změnit, upravit nebo spojit více e-mailových adres s naším účtem, zapnout dvoufaktorovou autentizaci, vytvořit a načíst SSH a GPG klíče, změnit informace veřejného profilu, zobrazit aktivitu přihlášení, smazat účet nebo stáhnout osobní data a mnoho dalšího. Také zde nalezneme sekci Developer settings, kterou využijeme pro správu přístupových tokenů.
GitHub a protokoly HTTPS a SSH
Než budeme vytvářet vzdálené repozitáře, je důležité nastavit Git pro práci s GitHubem. GitHub umožňuje připojení k repozitářům pomocí protokolu HTTPS a SSH.
Protokol HTTPS
Připojení ke vzdálenému repozitáři pomocí protokolu HTTPS vyžaduje zadání uživatelského jména a hesla při každém přístupu k repozitáři. Ačkoli je přenos dat pomocí protokolu HTTPS šifrovaný, což poskytuje určitou úroveň zabezpečení, zadání uživatelského jména a hesla může být méně bezpečné a pohodlné zejména při dlouhodobé práci s repozitářem.
Od srpna 2021 GitHub odebral podporu pro používání hesla k účtu z příkazové řádky Gitu. HTTPS lze i nadále používat, ale vyžaduje nastavení osobního přístupového tokenu (PAT) místo hesla. Pokud bychom se pokusili odeslat repozitář na GitHub nebo jej aktualizovat pomocí hesla účtu, zobrazí se nám následující zpráva:
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
Osobní přístupový token (PAT)
Osobní přístupový token funguje jako sekundární heslo. Je ale jedinečný, bezpečnější a umožňuje nastavení oprávnění.
Vytvoření osobního tokenu
Nyní si token (PAT) vytvoříme. Vrátíme se do nastavení Settings a v levém menu vybereme možnost Developer settings. Budeme přesměrováni na správu tokenů. Pak v menu klikneme na Personal access tokens a Tokens (classic):
Klikneme na Generate new token a vybereme možnost Generate new token (classic). Nový token pojmenujeme a zadáme mu datum vypršení platnosti:
Nakonec vybereme povolení, která tento token obsahuje. Chceme-li pracovat s repozitáři, zaškrtneme volbu repo. Token vytvoříme kliknutím na Generate token, čímž získáme token v podobném formátu:
ghp_aaa4bbbbrccccmFu00LP11ajKddsssT11
Přístupové tokeny nikdy nezveřejňujeme!
Využití osobního tokenu
Token využijeme u přihlášení při provádění operací Gitu přes
protokol HTTPS. Pokud bychom například chtěli naklonovat repozitář
příkazem git clone
, byli bychom vyzváni k zadání
uživatelského jména a hesla. Místo hesla bychom však zadali svůj osobní
přístupový token:
git clone https://github.com/<uživatelské jméno>/<repozitář> Username: [uživatelské jméno] Password: [osobní přístupový token]
Git automaticky uloží přihlašovací údaje do mezipaměti po dobu 15 minut. Po uplynutí této doby budeme požádáni, abychom opět zadali uživatelské jméno včetně osobního tokenu. Tuto dobu uložení v mezipaměti můžeme změnit následujícím příkazem:
MINGW64:/c/mujgit ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main) $ git config --global credential.helper "cache --timeout=3600" ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main) $
Čas se zadává v sekundách. V kódu výše jsme tedy nastavili jednu hodinu.
Protokol SSH
Protokol SSH využívá pro autentizaci na rozdíl od protokolu HTTPS SSH klíče. To poskytuje vyšší úroveň zabezpečení i pohodlí. SSH klíče jsou generovány. Při jejich použití není třeba opakovaně zadávat heslo.
Generování SSH klíče
Abychom se mohli připojit přes SSH, musíme si nejprve vygenerovat SSH klíč a připojit ho k našemu GitHub účtu. Otevřeme příkazovou řádku a vygenerujeme nový SSH klíč.
Po spuštění příkazu ssh-keygen
po nás bude generátor SSH
klíče chtít vybrat cíl, kam klíče uložit, a takzvanou
passphrase
neboli heslo:
MINGW64:/c/mujgit ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main) $ ssh-keygen -t rsa -b 4096 -C "[email protected]" Generating public/private rsa key pair. Enter file in which to save the key: Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in: C:\Users\ItNetwork\.ssh\id_rsa Your public key has been saved in: C:\Users\ItNetwork\.ssh\id_rsa.pub The key fingerprint is: <hash klíče> ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main) $
Nyní máme vygenerovaný SSH klíč. V operačním systému Windows jej
nalezneme ve složce C:\Users\<Uživatel>\.ssh\
, v Linuxu pak
ve složce /home/<Uživatel>/.ssh
.
SSH klíče se vždy generují jako dvojice veřejných
id_rsa.pub
a privátních id_rsa
klíčů. Je
nesmírně důležité, abychom privátní id_rsa
klíč nikdy
nezveřejňovali!
Otevřeme soubor id_rsa.pub
a zkopírujeme jeho obsah.
Přidání SSH klíče na GitHub
V nastavení účtu se přesuneme do sekce SHH and GPG keys, kde klikneme na New SSH key:
Zobrazený formulář vyplníme následovně:
Do pole:
- Title vložíme nějaký náš název klíče.
- Key type nebudeme zasahovat a ponecháme zde Authentication Key.
- Key vložíme obsah ze souboru
id_rsa.pub
.
Testování funkčnosti SSH klíče
Fungování SSH klíče si nyní ověříme. Otevřeme příkazovou řádku,
ve které spustíme příkaz ssh -T [email protected]
a zadáme
passphrase
:
MINGW64:/c/mujgit ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main) $ ssh -T [email protected] Enter passphrase for key /c/Users/<Uživatel>.ssh/id_rsa:
Po zadání hesla se nám vrátí následující zpráva, která oznamuje, že SSH spojení s GitHubem proběhlo v pořádku:
MINGW64:/c/mujgit ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main) $ ssh -T [email protected] Enter passphrase for key /c/Users/<Uživatel>.ssh/id_rsa: <passphrase> Hi [Vaše uživatelské jméno] ! You've successfully authenticated, but GitHub does not provide shell access. ItNetwork@DESKTOP-ADEVTG4 MINGW64 /c/mujgit (main) $
Pokud se budeme s GitHubem spojovat pomocí protokolu SSH, Git bude
automaticky číst klíče z adresáře /.ssh
.
V příští lekci, Git - Vzdálený repozitář - Vytvoření a nastavení repozitáře, si vytvoříme vzdálený repozitář a ukážeme si jeho důležitá nastavení včetně vytvoření issue, odkazu a přístupu pro uživatele.