Salta el contingut
 

Mètodes d'autenticació a GitHub

Joan Puigcerver Ibáñez

j.puigcerveribanez@edu.gva.es

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Mètodes d'autenticació a GitHub

En el blocs anteriors, ens hem centrat en conéixer la seua estructura i realitzar accions bàsiques per realitzar canvis sobre aquest.

No obstant això, totes les accions que hem realitzat fins ara han sigut sobre un repositori local, és a dir, un repositori que es troba en el nostre dispositiu i aquests canvis no han segut publicats en cap lloc.

En aquest bloc, ens centrarem en la creació de repositoris remots; repositoris que es troben allotjats en un servidor, que permeten l'accés a altres usuaris i la col·laboració en el desenvolupament de projectes. En aquest curs, utilitzarem GitHub com a servidor d'allotjament de repositoris remots.

En aquests apunts ens centrarem en la configuració dels mètodes d'autenticació que ens permeten connectar-nos al servidor de GitHub i gestionar els nostres repositoris remots.

Estructura d'un repositori local i remot

Figura 1. Estructura d'un repositori local i remot

Creació d'un compte a GitHub

Si no en teniu encara, caldrà un compte a GitHub.

Hi ha persones que prefereixen tindre diferents comptes: un personal i un professional. Això depén de les preferències de cadascú.

No obstant això, gestionar l'autenticació de múltiples comptes afegeix complexitat addicional. A més, cal fixar-se en la configuració local i global dels valors git config user.name i git config user.email.

Mètodes d'autenticació a GitHub

Per poder enllaçar el teu repositori local amb el repositori remot i fer canvis en aquest, necessites autenticar-te amb el servidor de GitHub.

Recomanació

Per seguretat i fàcil reutilització, es recomana utilitzar el mètode SSH per autenticar-se amb el servidor de GitHub.

Pots consultar l'apartat Configuració de la clau SSH per configurar aquest mètode d'autenticació directament.

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

  • Protocol HTTPS: Utilitza el protocol HTTPS per autenticar-se amb el servidor de GitHub.

    Per utilitzar aquest mètode, has de configurar les teues credencials d'accés a GitHub en el teu sistema local.

    Aquesta autenticació es pot realitzar 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): GitHub permet crear un token d'accés personal per autenticar-se amb el servidor de GitHub.

    • Extensions de l'IDE: Alguns Entorns de Desenvolupament Integrats (IDE) inclouen extensions que permeten gestionar l'autenticació amb GitHub directament.

  • Protocol SSH: Utilitza el protocol SSH per autenticar-se amb el servidor de GitHub.

    Per utilitzar aquest mètode, has de configurar una clau SSH en el teu sistema local i afegir-la al teu compte de GitHub.

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 amb el servidor de GitHub mitjançant el protocol HTTPS.

Per crear un token d'accés personal, segueix els següents passos:

  • Inicia la sessió a GitHub
  • Fes clic a la teua foto de perfil i selecciona Settings.
  • A la barra lateral esquerra, fes clic a Developer settings.
  • A la barra lateral esquerra, fes clic a Personal access tokens.
  • Fes clic a Generate new token.

Existeixen dos tipus de tokens d'accés personal:

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

Una vegada creat el token, podràs utilitzar-lo per autenticar-te amb el servidor de GitHub.

Important

Guarda el teu token d'accés personal en un lloc segur.

No podràs veure'l de nou després de tancar la pàgina.

Pots utilitzar el teu token d'accés personal per autenticar-te amb el servidor de GitHub de dues maneres:

  • Mitjançant la URL: Pots afegir el teu token d'accés personal a la URL del repositori per autenticar-te amb el servidor de GitHub.
    git clone https://<token>@github.com/<usuari>/<repositori>
    
  • Mitjançant la contrasenya: Pots utilitzar el teu token d'accés personal com a contrasenya per autenticar-te amb el servidor de GitHub.

    Note

    Per seguretat, no es mostrarà res en el camp de la contrasenya quan l'introduïsques.

    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>
    

Consell

Per tal de no haver de recordar el PAT cada vegada, és possible configurar Git perquè ho recorde automàticament.

git config --global credential.helper store
Aquesta comanda guardarà les credencials en un fitxer de text pla en el teu sistema local, concretament en el fitxer ~/.git-credentials.

Autenticació mitjançant claus SSH

Per autenticar-te amb el servidor de GitHub mitjançant el protocol SSH, has de configurar una clau SSH en el teu sistema local i afegir-la al teu compte de GitHub.

Important

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

Documentació

Connecting to GitHub with SSH GitHub Docs

Generació de la clau SSH

Per generar una clau SSH, segueix els següents passos:

  • Obri el programa Git GUI.

    A Windows, el programa ve inclòs amb la instal·lació de Git.

  • Obri el diàleg a Help > Show SSH Key.

    Git GUI: menú diàleg SSH

    Menú diàleg SSH de Git GUI

  • Fes clic a Generate Key.

    • Opcionalment, indica una contrasenya (passphrase) per protegir la clau o deixa el camp buit per no protegir-la.
  • Fes clic a Copy to Clipboard per copiar la clau pública al porta-retalls.

    Git GUI: clau SSH generada

    Clau SSH generada amb Git GUI

  • Crea una clau SSH al teu sistema local mitjançant la comanda 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 el tipus de clau RSA.
    • -b 4096: Indica la longitud de la clau en bits.
    • Pots indicar la ruta on guardar la clau. Per defecte, es guarda en /home/<usuari>/.ssh/id_rsa.
    • Pots indicar una contrasenya per protegir la clau. Si no vols protegir-la, deixa el camp buit.
  • Còpia 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
    ...
    

Configuració de la clau SSH

Després, configura la clau SSH al teu compte de GitHub seguint els següents passos:

  • Inicia la sessió a GitHub.
  • Fes clic a la teua foto de perfil i selecciona Settings.
  • A la barra lateral esquerra, fes clic a SSH and GPG keys.
  • Fes clic a New SSH key.
    • Indica un títol per a la clau SSH.
    • Enganxa el contingut de la clau pública al camp Key.

Comprovació de l'autenticació

Per comprovar que la clau SSH s'ha configurat correctament, executa la següent comanda en el terminal:

ssh -T git@github.com

En cas que la clau SSH estiga configurada correctament, el terminal mostrarà un missatge amb el nom 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.

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.