4. témakör · Távoli tárolók: GitHub · 16. fejezet
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.
https://github.com/… · git@github.com:…).ssh-keygen), hozzáadod a GitHubhoz, és teszteled (ssh -T).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.
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.
| HTTPS | SSH | |
|---|---|---|
| A repó címe | https://github.com/anna-kovacs/weboldal.git | git@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ás | első feltöltéskor egy böngészős bejelentkezés | egyszer: kulcs készítése és feltöltése |
| Előny | azonnal 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 Desktopban | sajá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.
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.
git push → megjelenik a Connect to GitHub ablak.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.
repo jogkörrel minden repódhoz.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).
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.
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.
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
ed25519 a mai ajánlott kulcstípus (régebbi rendszereken rsa, 4096 bittel). A -C csak egy megjegyzés, szokás szerint az e-mail címed.ssh-agent, ssh-add) megjegyzi.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!
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.
…@users.noreply.github.com címet, különben a push elutasítódhat (push would publish a private email address).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.
| Hibaüzenet | Mit jelent? | Teendő |
|---|---|---|
Support for password authentication was removed… · Authentication failed | jelszó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ókodhoz | ssh-keygen, a .pub feltöltése, ssh -T git@github.com |
Repository not found | elí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-peter | a gép egy másik fiók adatait tárolja | a tárolt belépési adat törlése, újra bejelentkezés |
Host key verification failed | az 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 |
Olvasd el a hibaüzenetet (vagy a helyzetet), és válaszd ki a legvalószínűbb megoldást!
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.
A Git bejelentkezést kér a https://github.com címhez.
⭐ alap · ⭐⭐ haladó · ⭐⭐⭐ kihívás
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.
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?
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!)
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.
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).
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.
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.
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.
| Fogalom | Jelentés |
|---|---|
| hitelesítés | annak igazolása a GitHub felé, hogy ki vagy (push, privát repó) |
| HTTPS-cím | https://github.com/tulaj/repo.git; tokennel hitelesít |
| SSH-cím | git@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ár | titkos kulcs (a gépen marad) + publikus kulcs (.pub, a GitHubra kerül) |
ssh-keygen | kulcspár készítése: ssh-keygen -t ed25519 -C "email" |
ssh -T git@github.com | az SSH-kapcsolat tesztje (Hi …! You've successfully authenticated) |
| jelmondat (passphrase) | a titkos kulcsot védő jelszó; az ssh-agent megjegyzi |
known_hosts | a megbízható szerverek kulcsainak listája a gépeden |
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.git@github.com:…): ssh-keygen -t ed25519, a .pub a GitHubra (SSH and GPG keys), teszt: ssh -T git@github.com.git remote set-url origin …. A Desktop: Options → Accounts → Sign in, mindig HTTPS.Most, hogy a Git tudja, ki vagy, jöhet a távoli repók kezelése: remote és clone.