Vezérlőpult
16. Hitelesítés: HTTPS és SSH · Távoli tárolók: GitHub

4. témakör · Távoli tárolók: GitHub · 16. fejezet

Hitelesítés: HTTPS és SSH

Mielőtt a gépedről feltöltesz a GitHubra, a GitHubnak tudnia kell, ki vagy. Jelszóval ez már nem megy: 2021 óta tokennel (HTTPS) vagy SSH-kulccsal kell azonosítani magad. Megnézzük mindkét utat, a Git Credential Manager kényelmes böngészős bejelentkezését, az SSH-kulcs elkészítését és feltöltését, és a leggyakoribb hibaüzenetek jelentését.

CLI + DesktopSSH-kulcs a GitHubonHibaelhárítóSzimulátor15 kvízkérdés

Tanulási célok

1Miért kell hitelesítés?

Egy nyilvános repót bárki letölthet (clone), ehhez nem kell bejelentkezni. Feltölteni (push) viszont csak az tud, akinek joga van hozzá, és egy privát repót csak az láthat, akit meghívtak. Ezért a Gitnek minden ilyen műveletnél igazolnia kell a GitHub felé, hogy te vagy te.

⚠️ A JELSZÓ MÁR NEM MŰKÖDIK

2021. augusztus 13. óta a GitHub parancssorból nem fogadja el a fiókod jelszavát. Ha mégis azt írod be, ezt kapod: Support for password authentication was removed on August 13, 2021. Helyette token (HTTPS) vagy SSH-kulcs kell. A jó hír: Windows-on a Git Credential Manager ezt szinte észrevétlenül elintézi.

2Két út: HTTPS és SSH

HTTPSSSH
A repó címehttps://github.com/anna-kovacs/weboldal.gitgit@github.com:anna-kovacs/weboldal.git
Mivel azonosít?token (a Credential Manager kezeli)kulcspár: a titkos kulcs a gépeden, a publikus a GitHubon
Beállításelső feltöltéskor egy böngészős bejelentkezésegyszer: kulcs készítése és feltöltése
Előnyazonnal működik, tűzfalon is átmegy (443-as port)nincs lejáró token; több géphez külön kulcs
Kinek ajánlott?kezdőknek, iskolai gépen, a Desktopbansaját gépen, rendszeres parancssori munkához

A GitHub repóoldalán a zöld Code gomb alatt mindkét cím kimásolható (HTTPS / SSH fül). Hogy a repód melyiket használja, a git remote -v mutatja meg (17. fejezet), és a git remote set-url paranccsal bármikor átállíthatod.

3HTTPS: Credential Manager és token

A Git for Windows része a Git Credential Manager (GCM). Az első olyan műveletnél, amelyhez bejelentkezés kell (pl. git push), egy ablakot nyit: Sign in with your browser. A böngészőben jóváhagyod, a GCM pedig egy tokent kap, és eltárolja a Windows Hitelesítőadat-kezelőjében. Legközelebb már nem kérdez.

  1. git push → megjelenik a Connect to GitHub ablak.
  2. Sign in with your browser → a böngészőben bejelentkezel (ha kell, kétlépcsős azonosítással), majd Authorize git-ecosystem.
  3. Visszatérsz a terminálba: a push lefut. A token innentől tárolva van.

Személyes hozzáférési token (PAT)

Ha nincs Credential Manager (pl. egy szerveren vagy egy régi Gitnél), a jelszó helyére egy személyes hozzáférési tokent (Personal Access Token) kell beírni. A GitHubon: Settings → Developer settings → Personal access tokens.

⛔ A TOKEN TITOK

Soha ne írd tokent vagy jelszót a repó címébe (https://anna:ghp_…@github.com/…), a forráskódba vagy egy feltöltött fájlba. Ha véletlenül mégis nyilvánosságra került, azonnal töröld (revoke) a GitHubon, és készíts újat (9. fejezet: titkok).

4A tárolt belépési adatok (közös gépen!)

A Windows a tokent a Hitelesítőadat-kezelőben (Credential Manager, Vezérlőpult → Hitelesítőadat-kezelő → Windows hitelesítő adatok) tárolja git:https://github.com néven.

⚠️ ISKOLAI, KÖZÖS GÉPEN

Ha egy közös gépen bejelentkezel, utánad a következő diák a te nevedben tölthet fel! Óra végén töröld a git:https://github.com bejegyzést, vagy parancssorból: cmdkey /delete:git:https://github.com. Ugyanez segít, ha a gép rossz fiókot jegyzett meg, és Permission denied … to toth-peter hibát kapsz.

5SSH-kulcs készítése

Az SSH egy kulcspárral dolgozik. A titkos kulcs (private key) a gépeden marad, mint a kulcs a zsebedben. A publikus kulcsot (public key) feltöltöd a GitHubra, mint egy lakatot, amelyet csak a te kulcsod nyit. Csatlakozáskor a gép bizonyítja, hogy nála van a titkos kulcs, de azt magát sosem küldi el.

PS> ssh-keygen -t ed25519 -C "kovacs.anna@pelda.hu"
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\anna/.ssh/id_ed25519):   # Enter: alapértelmezett hely
Enter passphrase (empty for no passphrase):                         # jelmondat (ajánlott)
Your identification has been saved in C:\Users\anna/.ssh/id_ed25519
Your public key has been saved in C:\Users\anna/.ssh/id_ed25519.pub
PS> cat ~\.ssh\id_ed25519.pub | clip        # a PUBLIKUS kulcs a vágólapra
🔑 id_ed25519titkos kulcs · a gépeden marad · soha ne add ki
🔒 id_ed25519.pubpublikus kulcs · ezt töltöd fel a GitHubra · nyugodtan megmutathatod

6A kulcs hozzáadása a GitHubhoz

A GitHubon: profilkép → Settings → SSH and GPG keys → New SSH key. Adj neki beszédes nevet (melyik gép), illeszd be a .pub fájl tartalmát, és mentsd. Próbáld ki ezen a mintán; a szimulátor (9. szakasz) is ezt a listát használja!

Settings → SSH and GPG keys

Ellenőrzés és használat:

PS> ssh -T git@github.com
Hi anna-kovacs! You've successfully authenticated, but GitHub does not provide shell access.
PS> git remote set-url origin git@github.com:anna-kovacs/weboldal.git

Az első kapcsolódáskor az SSH megkérdezi, megbízol-e a github.com gépben (The authenticity of host … can't be established). Az ujjlenyomatot a GitHub dokumentációja közli; ha egyezik, yes, és a gép bekerül a ~/.ssh/known_hosts fájlba.

7Bejelentkezés a GitHub Desktopba

💡 KÉTLÉPCSŐS AZONOSÍTÁS

A GitHub a kódot feltöltő fiókoknál kötelezővé teszi a kétlépcsős azonosítást (2FA, 4. fejezet). A token és az SSH-kulcs ezt nem kerüli meg: a böngészős bejelentkezéskor a 2FA-kódot is kéri.

8Gyakori hibák

HibaüzenetMit jelent?Teendő
Support for password authentication was removed… · Authentication failedjelszót adtál meg, vagy lejárt a token bejelentkezés a Credential Managerrel; a régi bejegyzés törlése a Hitelesítőadat-kezelőből; új token
Permission denied (publickey)nincs SSH-kulcs, vagy nincs hozzáadva a GitHub-fiókodhozssh-keygen, a .pub feltöltése, ssh -T git@github.com
Repository not foundelírtad a címet, vagy a privát repóhoz nincs jogod (vagy más fiókkal vagy bejelentkezve)cím ellenőrzése; meghívás kérése; a tárolt fiók cseréje
Permission to anna-kovacs/weboldal.git denied to toth-petera gép egy másik fiók adatait tároljaa tárolt belépési adat törlése, újra bejelentkezés
Host key verification failedaz SSH nem bízik a szerverben (vagy megváltozott a kulcsa)ujjlenyomat ellenőrzése, a régi sor törlése a known_hosts-ból

Hibaelhárító: mi a teendő?

Olvasd el a hibaüzenetet (vagy a helyzetet), és válaszd ki a legvalószínűbb megoldást!

1 / 8Pontszám: 0
…

9Gyakorlás a szimulátorban

A jegyzetek repód privát, és HTTPS-sel van leklónozva; van egy fel nem töltött commitod. Előbb jelentkezz be a Credential Managerrel, aztán állítsd át a repót SSH-ra: kulcs, feltöltés a fenti SSH and GPG keys oldalon, teszt, cím átállítása.

PowerShell + Git

Windows PowerShell
Küldetések 0 / 9

    10Feladatok

    Gyakorló feladatok

    ⭐ alap · ⭐⭐ haladó · ⭐⭐⭐ kihívás

    16.1⭐CLI

    Egy saját repódban futtasd a git remote -v parancsot: HTTPS vagy SSH címet használ? Keresd meg a repó GitHub-oldalán a Code gomb alatt a másik címet is.

    16.2⭐Desktop

    Jelentkezz be a GitHub Desktopba, és nézd meg az Options → Git fülön, milyen névvel és e-mail címmel készülnek a commitjaid. Egyezik a git config user.email kimenetével?

    16.3⭐

    Nyisd meg a Windows Hitelesítőadat-kezelőt, és keresd meg a git:https://github.com bejegyzést. (Közös gépen óra végén töröld!)

    16.4⭐⭐CLI

    Saját gépeden készíts ed25519 SSH-kulcsot jelmondattal, add hozzá a GitHub-fiókodhoz, és teszteld az ssh -T git@github.com paranccsal. Állítsd át egy repód címét SSH-ra, és tölts fel.

    16.5⭐⭐Web

    Hozz létre egy fine-grained személyes hozzáférési tokent, amely csak egyetlen repódhoz, csak olvasásra fér hozzá, és 7 nap múlva lejár. Utána töröld (revoke).

    16.6⭐⭐

    Oldd meg a Hibaelhárító mind a nyolc feladatát, és írj egy rövid „mit tegyek, ha…” puskát a leggyakoribb három hibáról.

    16.7⭐⭐⭐CLI

    Nézz utána, hogyan írhatod alá a commitjaidat az SSH-kulcsoddal (gpg.format ssh), és mit jelent a GitHubon a Verified címke egy commit mellett.

    11Önellenőrző kvíz

    Ellenőrizd magad!

    Az egyválasztós kérdéseknél kattints a válaszra. A többválasztósaknál jelöld be az összes helyeset, majd nyomd meg az Ellenőrzés gombot.

    12Fogalomtár

    FogalomJelentés
    hitelesítésannak igazolása a GitHub felé, hogy ki vagy (push, privát repó)
    HTTPS-címhttps://github.com/tulaj/repo.git; tokennel hitelesít
    SSH-címgit@github.com:tulaj/repo.git; kulcspárral hitelesít
    Git Credential Manager (GCM)a Git for Windows része; böngészős bejelentkezés után tárolja a tokent
    személyes hozzáférési token (PAT)jelszó helyett használható, korlátozható és lejáró hozzáférési kulcs
    Hitelesítőadat-kezelőa Windows tárolója a mentett belépési adatoknak (git:https://github.com)
    SSH-kulcspártitkos kulcs (a gépen marad) + publikus kulcs (.pub, a GitHubra kerül)
    ssh-keygenkulcspár készítése: ssh-keygen -t ed25519 -C "email"
    ssh -T git@github.comaz SSH-kapcsolat tesztje (Hi …! You've successfully authenticated)
    jelmondat (passphrase)a titkos kulcsot védő jelszó; az ssh-agent megjegyzi
    known_hostsa megbízható szerverek kulcsainak listája a gépeden

    13Összegzés

    1. Feltöltéshez és privát repóhoz hitelesítés kell; a jelszó 2021 óta nem működik.
    2. HTTPS (https://github.com/…): a Git Credential Manager böngészős bejelentkezéssel tokent kér és tárol; tokent (PAT) kézzel is készíthetsz.
    3. SSH (git@github.com:…): ssh-keygen -t ed25519, a .pub a GitHubra (SSH and GPG keys), teszt: ssh -T git@github.com.
    4. Váltás: git remote set-url origin …. A Desktop: Options → Accounts → Sign in, mindig HTTPS.
    5. Közös gépen óra végén jelentkezz ki / töröld a tárolt adatot. A titkos kulcs és a token titok.

    Most, hogy a Git tudja, ki vagy, jöhet a távoli repók kezelése: remote és clone.