# Alapok és SSH kulcs ### Alapok Hogyan lehet a mi `.git` mappánkat megosztani a nagyvilággal? Több módja is van ennek, például akár egy .git mappát is lelehet magunkhoz klónozni. A `git clone <elérési út>` parancsot használjuk ahhoz, hogy valahonnan lehúzzunk egy git repo-t. Ha például csak egy mappára utalunk, aminek a neve `awesome_project.git`: ``` $ git clone --bare awesome_project awesome_project.git Cloning into bare repository 'awesome_project.git'... done. ``` Ezt akár kirakhatjuk egy fájlszerverre és onnan megoszthatnánk. Következő szint, mikor weben keresztül szedjük le a nekünk kellő repo-t. Ilyenkor HTTP protokollt használhatunk, ami hasonló az előzőhöz és olyan, mint mikor egy fájlt töltünk le egy oldalról. ``` $ git clone https://github.com/rlacko58/git-presentation.git Cloning into 'git-presentation'... remote: Enumerating objects: 173, done. remote: Counting objects: 100% (173/173), done. remote: Compressing objects: 100% (114/114), done. remote: Total 173 (delta 65), reused 155 (delta 47), pack-reused 0 Receiving objects: 100% (173/173), 291.34 KiB | 1.22 MiB/s, done. Resolving deltas: 100% (65/65), done. ``` Ez szimplán fogja és készít nekünk egy olyan repository-t, mint amit az előzőkben csináltunk kézzel. Lemásolja a .git mappát, majd pedig onnan kiszedi a megfelelő dolgokat a mi `work tree`-nkbe. ### SSH Másik protokoll amit tudunk használni az az SSH. Ez azért nagyon jó, mert ha ezen keresztül szedünk le, akkor nem kell minden alkalommal a github, gitlab felhasználónkba belépnünk egy repo-n való dolgozáskor. Ahhoz, hogy ilyet tudjunk csinálni viszont SSH kulcsot kell készítenünk. Ennek annyi a trükkje, hogy rakunk a saját gépünkre egy privát kulcsot és a távoli szerverre egy publikus kulcsot, vagy bárhova ahova szeretnénk. Ezután mikor az adott szerverre felakarunk menni, valamit csinálni ott, akkor előtte a szerver leauthentikál minket és egy kulcs csere után elkezdhetünk vele kommunikálni. Az authentikáció lépése nagy vonalakban: - Szerver publikus kulcsal letitkosít valamit és elküldi nekünk - Ezt amit elküld csak a privát kulccsal lehet kibontani, ezt mi elvégezzük - A kibontott adatok közt lesz egy másik kulcs, mellyel titkosítva elküldjük a szervernek ami kell az authentikációhoz - A szerver kibontja, látja hogy minden oké és megtörténik a kulcs csere Ezután áttérnek egy másik módszerre amihez már mindkét oldalt megvan a megfelelő kulcs és titkosítva küldik egymásnak az adatokat Nagyon király dolog, mivel gyors, hatékony és nem kell jelszót beírogatni minden művelet közt #### Saját SSH kulcs ###### Linuxon / MacOS-en 1. Terminált megnyitjuk 2. Generálunk egy SSH kulcsot `ssh-keygen -t rsa -b 4096` 3. Alapértelmezett helyre mentjük 4. Megadunk egy jelszót ha szeretnénk _Ha valaki megszerzi a privát kulcsunk nem tudja használni a jelszó beírása nélkül_ Adjuk hozzá az SSH agent-ünkhöz. 1. Elindítjuk az agent-et ha még nem ment volna `$ eval "$(ssh-agent -s)"` `Agent pid 59566` 2. Hozzáadjuk az új kulcsunk `ssh-add ~/.ssh/id_rsa` Végezetül a publikus kulcsot feltöltjük például githubra A publikus kulcs helye: `~/ssh/id_rsa.pub` ###### Windowson 1. Git Bash-t megnyitjuk 2. Generálunk egy kulcsot `ssh-keygen -t rsa -b 4096` 3. Elmentjük az alapértelmezett helyre 4. Jelszó adunk hozzá ha szeretnénk Hozzá adjuk az SSH agent-ünkhöz 1. Elindítjuk az agent-et ha még nem ment volna `$ eval $(ssh-agent -s)` `> Agent pid 59566` 2. Hozzáadjuk az új kulcsunk `ssh-add ~/.ssh/id_rsa` Végezetül a publikus kulcsot feltöltjük például githubra A publikus kulcs helye: `~/ssh/id_rsa.pub` Forrás: [docs.github.com](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) [Előző](workshop/3_branch?id=branch-ek-elágazás) | [Következő](remote/2_github)