Salta el contingut
 

Mètodes d'autenticació a GitHub

Joan Puigcerver Ibáñez

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Introducció

En els blocs anteriors, s'ha presentat l'estructura d'un repositori de Git i les accions bàsiques per a fer-hi canvis.

No obstant això, totes aquestes accions s'han fet sobre un repositori local, és a dir, un repositori que es troba en el teu dispositiu i els canvis del qual no s'han publicat enlloc.

Aquest bloc se centra en els repositoris remots: repositoris allotjats en un servidor, que permeten l'accés d'altres persones i la col·laboració en el desenvolupament de projectes. En aquest curs s'utilitza GitHub com a servidor d'allotjament de repositoris remots.

En concret, aquests apunts expliquen com configurar els mètodes d'autenticació que permeten connectar-se al servidor de GitHub i gestionar els repositoris remots.

Estructura d'un repositori local i remot Estructura d'un repositori local i remot

Figura 1. Estructura d'un repositori local i remot.

Creació d'un compte a GitHub

Per a treballar amb repositoris remots, cal un compte a GitHub. Si encara no en tens, crea'n un.

Hi ha persones que prefereixen tindre diferents comptes, per exemple, un de personal i un de professional.

No obstant això, gestionar l'autenticació de diversos comptes afig complexitat. A més, cal parar atenció a la configuració local i global dels valors user.name i user.email.

Mètodes d'autenticació

Per a enllaçar el teu repositori local amb el repositori remot i publicar-hi canvis, cal autenticar-se en el servidor de GitHub.

Per seguretat i comoditat, es recomana utilitzar el mètode SSH per a autenticar-se en el servidor de GitHub.

Pots anar directament a l'apartat Autenticació mitjançant claus SSH per a configurar aquest mètode d'autenticació.

GitHub ofereix diferents mètodes d'autenticació, basats en dos protocols de comunicació:

  • Protocol HTTPS: cal configurar les teues credencials d'accés a GitHub en el sistema local. Aquesta autenticació es pot fer mitjançant:

    • Nom d'usuari i contrasenya: aquest mètode està deshabilitat a GitHub des del 13/08/2021.
    • Token d'accés personal (Personal Access Token o PAT): una clau d'accés que GitHub permet crear per a autenticar-se en el servidor.
    • Extensions de l'IDE: alguns entorns de desenvolupament integrats (IDE) inclouen extensions que gestionen directament l'autenticació amb GitHub.
  • Protocol SSH: cal configurar una clau SSH en el sistema local i afegir-la al teu compte de GitHub.

A més, la ferramenta GitHub CLI (gh) permet configurar l'autenticació de manera interactiva amb qualsevol dels dos protocols, sense haver de crear manualment el token ni la clau SSH. Vegeu Autenticació mitjançant GitHub CLI.

Token d'accés personal (PAT)

Un token d'accés personal (Personal Access Token o PAT) és una clau d'accés que permet autenticar-se en el servidor de GitHub mitjançant el protocol HTTPS. Funciona com una contrasenya, però es pot limitar a uns permisos concrets i revocar en qualsevol moment.

Per a crear un token d'accés personal, segueix aquests passos:

  1. Inicia la sessió a GitHub.
  2. Fes clic en la teua foto de perfil i selecciona Settings.
  3. En la barra lateral esquerra, fes clic en Developer settings.
  4. En la barra lateral esquerra, fes clic en Personal access tokens.
  5. Fes clic en Generate new token.

Hi ha dos tipus de tokens d'accés personal:

  • Access token (classic): permet especificar els permisos del token, que són globals per a tot el compte.
  • Fine-grained token: permet especificar els permisos del token, que són específics per a un repositori o organització.

Una vegada creat el token, ja es pot utilitzar per a autenticar-se en el servidor de GitHub.

Guarda el teu token d'accés personal en un lloc segur: no el podràs vore de nou després de tancar la pàgina.

El token d'accés personal es pot utilitzar de dues maneres:

  • Mitjançant la URL: s'afig el token a la URL del repositori.

    git clone https://<token>@github.com/<usuari>/<repositori>
    
  • Mitjançant la contrasenya: s'introdueix el token quan Git demana la contrasenya.

    jpuigcerver@fp:~ $ git clone https://github.com/<usuari>/<repositori>
    Cloning into '<repositori>'...
    Username for 'https://github.com': <usuari>
    Password for 'https://<username>@github.com': <token>
    

    Per seguretat, el camp de la contrasenya no mostra res mentre l'escrius.

Per no haver d'introduir el PAT cada vegada, es pot configurar Git perquè el recorde automàticament.

git config --global credential.helper store

Aquesta ordre guarda les credencials en un fitxer de text pla en el sistema local, concretament en el fitxer ~/.git-credentials.

Documentació

Autenticació mitjançant claus SSH

Per a autenticar-se en el servidor de GitHub mitjançant el protocol SSH, cal generar una clau SSH en el sistema local i afegir-la al teu compte de GitHub. Una clau SSH és un parell de claus: la clau privada es queda en el teu dispositiu i la clau pública es comparteix amb GitHub.

Aquesta configuració s'ha de repetir en cada dispositiu on vulgues utilitzar aquest mètode d'autenticació.

Documentació oficial: Connecting to GitHub with SSH – GitHub

Generació de la clau SSH

La clau SSH es pot generar des d'una interfície gràfica o des de la terminal:

  1. Obri el programa Git GUI.

    En Windows, el programa s'inclou en la instal·lació de Git.

  2. Obri el diàleg Help > Show SSH Key.

    Menú de diàleg SSH de Git GUI

    Figura 1. Menú de diàleg SSH de Git GUI.

  3. Fes clic en Generate Key.

    Opcionalment, indica una contrasenya (passphrase) per a protegir la clau, o deixa el camp buit per no protegir-la.

  4. Fes clic en Copy to Clipboard per a copiar la clau pública al porta-retalls.

    Clau SSH generada amb Git GUI

    Figura 2. Clau SSH generada amb Git GUI.

  1. Crea una clau SSH en el sistema local amb l'ordre ssh-keygen.

    jpuigcerver@fp:~ $ ssh-keygen -t rsa -b 4096
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/jpuigcerver/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/jpuigcerver/.ssh/id_rsa
    
    • -t rsa: indica que la clau és de tipus RSA.
    • -b 4096: indica la longitud de la clau en bits.

    L'ordre demana la ruta on guardar la clau (per defecte, /home/<usuari>/.ssh/id_rsa) i una contrasenya per a protegir-la. Si no vols protegir-la, deixa el camp buit.

  2. Copia el contingut de la clau pública (id_rsa.pub) al porta-retalls.

    jpuigcerver@fp:~ $ cat ~/.ssh/id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC7GqFnEFQZK4+l3zvXF07hN/cMk5ZtJmMkHWAJyTYQ+pDwMXp9eQs
    +VASLlz9z+0Q3vnnXN4vBO/+2u29fKJ4YlrecDYtCDpEhMXCkaCv9/ggkru09j2rELFuAqER55lgEtRKTfLKAVFa3Ws
    2VV7zlTSAH2y8nVddzlJRE9Y1BAfH0+1hjpCe+vgGObBLyIGGsXwlmm3mwI7NKHuKCIVskIEX3F0jw668dBex+6VUtG
    ...
    

    Copia sempre la clau pública (.pub). La clau privada no s'ha de compartir mai.

Configuració de la clau SSH

Després, cal afegir la clau pública al teu compte de GitHub seguint aquests passos:

  1. Inicia la sessió a GitHub.
  2. Fes clic en la teua foto de perfil i selecciona Settings.
  3. En la barra lateral esquerra, fes clic en SSH and GPG keys.
  4. Fes clic en New SSH key.
  5. Indica un títol per a la clau SSH i enganxa el contingut de la clau pública en el camp Key.

Comprovació de l'autenticació

Per a comprovar que la clau SSH s'ha configurat correctament, executa l'ordre següent en la terminal:

ssh -T git@github.com

Si la clau SSH està ben configurada, la terminal mostra un missatge amb el teu nom d'usuari de GitHub.

jpuigcerver@fp:~ $ ssh -T git@github.com
Hi joapuiib! You've successfully authenticated, but GitHub does not provide shell access.

Autenticació mitjançant GitHub CLI

GitHub CLI és una ferramenta de línia d'ordres per a interactuar amb GitHub des de la terminal. Permet gestionar repositoris, incidències (issues), sol·licituds d'incorporació de canvis (pull requests) i altres funcionalitats de GitHub.

Una de les funcionalitats que ofereix és autenticar-se en el servidor de GitHub d'una manera senzilla. Per fer-ho, s'utilitza l'ordre gh auth login, que guia de manera interactiva en la configuració de l'autenticació.

jpuigcerver@fp:~ $ gh auth login
? What account do you want to log into? GitHub.com
? What is your preferred protocol for Git operations on this host? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Login with a web browser

! First copy your one-time code: ABCD-EFGH
Press Enter to open github.com in your browser...

✓ Authentication complete. You are now logged in as joapuiib

Documentació oficial de GitHub CLI

Bibliografia

📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.