Cum se generează chei SSH pentru GitHub
Publicat: 2022-02-05Git și GitHub sunt instrumente esențiale pentru fiecare dezvoltator. Sunt utilizate pe scară largă în aproape orice tip de proiect de dezvoltare software.
Există și alte servicii de găzduire Git, cum ar fi Gitlab și Bitbucket, dar GitHub este cea mai populară alegere pentru dezvoltatori. Puteți chiar să vă editați profilul pentru a părea mai atractiv pentru recrutori.
Puteți folosi Git și GitHub pentru a vă organiza proiectele, a colabora cu alți dezvoltatori și, desigur, la Kinsta.
Dar, deoarece Git și GitHub sunt instrumente legate, dar diferite, trebuie să vă actualizați fluxul de lucru cu fiecare dintre ele în mod constant.
Vă recomandăm să utilizați chei SSH pentru fiecare dintre mașinile dvs. Deci, în acest tutorial, veți afla care sunt acestea, câteva dintre avantajele lor și cum să generați și să configurați cheile SSH GitHub.
Să începem!
Ce sunt cheile SSH?
Mai simplu spus, cheile SSH sunt acreditări utilizate pentru protocolul SSH (Secure Shell) pentru a permite accesul securizat la computerele de la distanță prin internet. De obicei, autentificarea are loc într-un mediu de linie de comandă.
Acest protocol se bazează pe arhitectura client-server, ceea ce înseamnă că, ca utilizator (sau „client”) trebuie să utilizați un software special, numit client SSH, pentru a vă conecta la un server la distanță și a executa comenzi. Practic, asta este ceea ce faci atunci când te autentifici prin intermediul unui terminal la GitHub.

Dar SSH nu este folosit doar pentru GitHub. Este utilizat pe scară largă de alte platforme precum Kinsta, Google Cloud și Amazon Web Services pentru a crea un canal securizat de acces la serviciile lor.
Acum, îndreptându-vă spre modul în care funcționează cu adevărat cheile SSH, trebuie să înțelegeți diferențele dintre cheile publice și private.
Chei publice vs chei private
Să începem cu elementele de bază.
Protocolul SSH folosește o tehnică de criptare numită criptare asimetrică . Acest termen poate suna complicat și ciudat, dar nimic nu poate fi mai departe de adevăr.
Practic, criptarea asimetrică este un sistem care folosește o pereche de chei, și anume chei publice și private .
După cum puteți ghici, cheia publică poate fi partajată cu oricine. Scopul său principal este de a cripta datele, transformând mesajul în cod secret sau text cifrat. Această cheie este de obicei trimisă către alte sisteme - de exemplu, servere - pentru a cripta datele înainte de a le trimite pe internet.
Pe de altă parte, cheia privată este cea pe care trebuie să o păstrezi pentru tine. Este folosit pentru a decripta datele criptate cu cheia publică. Fără el, este imposibil să decodați informațiile dvs. criptate.
Această metodă vă permite dumneavoastră și serverului să păstrați un canal de comunicare sigur pentru transmiterea informațiilor.
Iată ce se întâmplă în fundal când vă conectați la un server prin SSH:
- Clientul trimite cheia publică către server.
- Serverul cere clientului să semneze un mesaj aleator criptat cu cheia publică folosind cheia privată.
- Clientul semnează mesajul și transmite rezultatul către server.
- Se stabilește o conexiune sigură între client și server.
Este important să vă păstrați cheile private în siguranță și să le împărtășiți cu nimeni sub nicio formă. Ele sunt literalmente cheia tuturor informațiilor trimise către tine.
Utilizarea cheilor SSH cu GitHub
Din 13 august 2021, Github nu mai acceptă autentificarea prin parolă pentru accesul în linia de comandă. Aceasta înseamnă că acum trebuie să vă autentificați printr-un token de acces personal sau să utilizați o cheie SSH (puțin mai convenabilă).
Iată ce se întâmplă atunci când încercați să vă autentificați cu parola GitHub prin HTTP într-un terminal:
Username for 'https://github.com': yourusername Password for 'https://[email protected]': remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: Authentication failed for 'https://github.com/yourusername/repository.git/'
GitHub are nevoie de cheia dvs. publică pentru a vă autoriza să editați oricare dintre repozițiile dvs. prin SSH.
Să vedem cum puteți genera chei SSH local.
Cum se generează chei SSH local
Acum că înțelegeți puțin despre protocolul SSH și diferențele dintre cheile publice și private, este timpul să configurați canalul SSH securizat între mașina dvs. și depozitul GitHub.
Înainte de a merge mai departe, ar trebui să aveți deja un cont GitHub și un terminal/prompt de comandă cu Git instalat în sistemul dumneavoastră. Dacă rulați Windows, asigurați-vă că ați instalat Git bash, care are toate instrumentele pe care va trebui să le urmați împreună cu acest tutorial încorporat.
Clientul OpenSSH este cel mai popular software open-source folosit pentru a se conecta prin SSH. Nu va trebui să vă faceți griji cu privire la sistemul dvs. de operare, deoarece este instalat implicit pe Linux, macOS și Windows 10.
Trebuie să porniți un prompt de comandă pe Windows sau un terminal pe sisteme bazate pe Unix pentru a genera chei SSH locale. De obicei, puteți face acest lucru căutând „terminal”, „cmd” sau „powershell” în panoul aplicației, apoi făcând clic pe pictograma care apare.

După ce faceți acest lucru, ar trebui să aveți o fereastră similară cu imaginea următoare.

Rulați următoarea comandă pentru a genera o pereche locală de chei SSH:
ssh-keygen -t ed25519 -C "[email protected]"
Este timpul să vă spun un secret: nimeni nu își poate aminti cu adevărat această comandă! Majoritatea dezvoltatorilor trebuie să-l caute pe Google de fiecare dată, deoarece:
- Este o comandă foarte lungă, cu numere uitabile, care par aleatorii.
- Îl folosim rar, așa că nu merită să îl memorăm de cele mai multe ori.
Cu toate acestea, este important să înțelegem fiecare comandă pe care o introducem în terminalele noastre, așa că haideți să vedem ce înseamnă fiecare parte a acesteia.
- ssh-keygen: instrumentul de linie de comandă folosit pentru crearea unei noi perechi de chei SSH. Puteți vedea steaguri cu ajutorul
ssh-keygen help
- -t ed25519: Indicatorul
-t
este folosit pentru a indica algoritmul utilizat pentru a crea semnătura digitală a perechii de chei. Dacă sistemul dumneavoastră îl acceptă,ed25519
este cel mai bun algoritm pe care îl puteți utiliza pentru a crea perechi de chei SSH. - -C „e-mail”:
-c
este folosit pentru a furniza un comentariu personalizat la sfârșitul cheii publice, care de obicei este e-mailul sau identificarea creatorului perechii de chei.
După ce ați introdus comanda în terminal, va trebui să introduceți fișierul în care doriți să salvați cheile. În mod implicit, se află în directorul dvs. de acasă, într-un folder ascuns numit „.ssh”, dar îl puteți schimba în orice doriți.

Apoi vi se va cere o expresie de acces pe care să o adăugați la perechea de chei. Acest lucru adaugă un nivel suplimentar de securitate dacă, în orice moment, dispozitivul dvs. este compromis. Nu este obligatoriu să adăugați o expresie de acces, dar este întotdeauna recomandat.
Iată cum arată întregul proces:

După cum puteți vedea, această comandă generează două fișiere în directorul pe care l-ați selectat (de obicei ~/.ssh ): cheia publică cu extensia .pub
și cea privată fără extensie.
Vă vom arăta cum să adăugați cheia publică la contul dvs. GitHub mai târziu.
Adăugați cheia SSH la ssh-agent
Programul ssh-agent rulează în fundal, deține cheile private și frazele de acces în siguranță și le păstrează gata de utilizare de către ssh. Este un utilitar grozav care vă scutește de la introducerea expresiei de acces de fiecare dată când doriți să vă conectați la un server.
Din acest motiv, veți adăuga noua cheie privată la acest agent. Iată cum:
- Asigurați-vă că ssh-agent rulează în fundal.
eval `ssh-agent` # Agent pid 334065
Dacă primești un mesaj similar cu acesta, dacă totul este în regulă. Înseamnă că agentul ssh rulează sub un anumit ID de proces (PID).
- Adăugați cheia dvs. privată SSH (cea fără extensie) la agentul ssh.
ssh-add ~/.ssh/kinsta_keys
Înlocuiți kinsta_keys cu numele cheii dvs. SSH. Dacă aceasta este prima cheie pe care ați creat-o, ar trebui să fie numită „id_algorithm_used”, de exemplu, id_ed25519 .
Adăugați cheia SSH la contul GitHub
Pasul final este să adăugați cheia publică la contul dvs. GitHub. Doar urmați aceste instrucțiuni:
- Copiați cheia publică SSH în clipboard. Puteți deschide fișierul în care se află cu un editor de text și îl puteți copia sau utiliza terminalul pentru a-și afișa conținutul.
cat ~/.ssh/kinsta_keys.pub # ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJl3dIeudNqd0DPMRD6OIh65tjkxFNOtwGcWB2gCgPhk [email protected]
- Conectați-vă la GitHub ] și accesați secțiunea din dreapta sus a paginii, faceți clic pe fotografia de profil și selectați Setări.
Setări GitHub. - Apoi, în profil setările dvs., faceți clic pe tastele SSH și GPG .
Chei SSH și GPG. - Faceți clic pe butonul Cheie SSH nouă .
Buton nou cheie SSH. - Dați-vă noii chei SSH pe GitHub un Titlu - de obicei, dispozitivul de pe care o veți folosi. Și apoi lipiți cheia în zona Cheie .
Adăugați un nou formular de cheie SSH. - Adăugați cheia dvs. SSH.
Adăugați butonul cheie SSH.
Testați conexiunea SSH cu un repo Push
Este timpul să testați tot ce ați făcut până acum. Veți modifica, comite și împingeți la unul dintre depozitele existente folosind SSH pentru a vă asigura că conexiunea este configurată corect.
Toate planurile de găzduire Kinsta includ asistență 24/7 din partea dezvoltatorilor și inginerilor noștri veterani WordPress. Discutați cu aceeași echipă care sprijină clienții noștri Fortune 500. Consultați planurile noastre!
Pentru exemplul nostru, vom modifica site-ul HTML simplu pe care l-am creat în tutorialul nostru Git pentru dezvoltare web.
În primul rând, va trebui să clonăm depozitul în mașina noastră locală. Putem merge la pagina repo de pe GitHub și putem copia adresa SSH pe care o furnizează.

Apoi, clonează repo-ul folosind un terminal:
git clone [email protected]:DaniDiazTech/HTML-site.git
Acum, să adăugăm o etichetă simplă <h1>
în fișierul index.html :
... <div class="container my-2"> <h1 class="text-center">A new title!<h1> </div> <div class="container my-3"> ...

Nu atingem niciun JavaScript sau CSS pentru a face această editare simplă. Dar dacă ești priceput cu JavaScript, s-ar putea să găsești un loc la Kinsta. Verificați abilitățile de codare de care aveți nevoie pentru a face parte din echipa Kinsta.
După ce faceți acest lucru, efectuați modificările:
git commit -am "Added a simple title"
Și împingeți-le în GitHub așa cum ați face de obicei.
git push
Dacă totul a mers bine, felicitări! Tocmai ai configurat o conexiune SSH între mașina ta și GitHub.
Gestionați mai multe chei SSH pentru diferite conturi GitHub
Dacă aveți mai multe conturi GitHub - să spunem unul pentru proiectele dvs. personale și unul pentru munca dvs. - este dificil să utilizați SSH pentru ambele. În mod normal, veți avea nevoie de mașini separate pentru a vă autentifica la diferite conturi GitHub.
Dar acest lucru poate fi rezolvat cu ușurință prin configurarea fișierului de configurare SSH.
Să intrăm în asta.
- Creați o altă pereche de chei SSH și adăugați-o la celălalt cont GitHub. Țineți minte numele fișierului căruia îi atribuiți noua cheie.
ssh-keygen -t ed25519 -C "[email protected]"
- Creați fișierul de configurare SSH. Fișierul de configurare spune programului ssh cum ar trebui să se comporte. În mod implicit, fișierul de configurare poate să nu existe, așa că creați-l în folderul .ssh/:
touch ~/.ssh/config
- Modificați fișierul de configurare SSH. Deschideți fișierul de configurare și inserați codul de mai jos:
#Your day-to-day GitHub account Host github.com HostName github.com IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes # Work account Host github-work HostName github.com IdentityFile ~/.ssh/work_key_file IdentitiesOnly yes
Acum, de fiecare dată când trebuie să vă autentificați prin SSH folosind contul de serviciu sau secundar, modificați puțin adresa SSH repo, de la:
[email protected]:workaccount/project.git
…la:
[email protected]:workaccount/project.git
rezumat
Felicitări – ați învățat majoritatea cunoștințelor practice de care aveți nevoie pentru a vă conecta la GitHub prin SSH!
Acest tutorial a discutat despre necesitatea protocolului SSH, diferențele dintre cheile publice și private, cum să generați chei, să le adăugați la GitHub și chiar să gestionați mai multe chei SSH pentru diferite conturi GitHub. Rețineți că, dacă nu doriți să pierdeți accesul la toate, cheia dvs. privată trebuie să rămână așa: privată.
Cu aceste cunoștințe, acum sunteți gata să dezvoltați un flux de lucru impecabil cu Git și GitHub. Continuați să codificați!