Lezione 13 di 35

Git 13

🔀 Git & GitHub · Modulo 3 · Lezione 13

Account GitHub e autenticazione 🔐

Creare l’account · SSH key vs token HTTPS · Configurazione sicura · GitHub Student Developer Pack

⏱️ Durata stimata: 60–75 min 📊 Livello: Intermedio (Modulo 3) 🔧 Strumenti: Browser · Terminale · Connessione Internet 📋 Prerequisiti: Moduli 1–2 (sai usare Git in locale)

🌐 Finora hai lavorato solo in locale — tutto sul tuo computer. Da questa lezione, porti il tuo lavoro online. GitHub è la piattaforma dove ospiterai i tuoi repository, collaborerai con i compagni e costruirai il tuo portfolio. In questa lezione crei il tuo account, configuri l’autenticazione sicura e scopri i vantaggi gratuiti per gli studenti.

🎯 Obiettivi della lezione

  • Creare un account GitHub con un nome utente professionale
  • Capire perché serve l’autenticazione per fare push
  • Confrontare i due metodi: SSH key vs token HTTPS
  • Configurare l’autenticazione SSH (consigliata)
  • Configurare l’autenticazione HTTPS con token (alternativa)
  • Verificare che l’autenticazione funzioni
  • Conoscere il GitHub Student Developer Pack

📖 1. Teoria

1.1 — Creare l’account GitHub

PASSO 1
Vai su github.com e clicca “Sign up”.
PASSO 2
Inserisci email (usa la stessa che hai configurato con git config nella Lezione 02!), una password robusta e scegli un username.
PASSO 3
Completa la verifica (puzzle CAPTCHA) e conferma l’email dal link che ricevi nella casella di posta.
PASSO 4
Scegli il piano Free (gratuito — ha tutto ciò che serve per questo corso e molto di più).
Lo username: la tua identità pubblica
✅ Buoni username
mario-rossi
mrossi-dev
giulia-bianchi
luca-dev-2026
Professionali, leggibili, riconducibili a te. Un datore di lavoro li vedrà.
❌ Username da evitare
xXx_killah_xXx
test12345
aaaaaaa
il_migliore_2006
Il tuo profilo GitHub è il tuo CV tecnico. Scegli con cura.

⚠️ L’email deve corrispondere! L’email del tuo account GitHub deve essere la stessa che hai configurato con git config --global user.email nella Lezione 02. Se sono diverse, GitHub non collegherà i tuoi commit al tuo profilo — appariranno come fatti da uno sconosciuto. Se hai usato un’email diversa, aggiornala: git config --global user.email "tua@email-github.it".

1.2 — Perché serve l’autenticazione

Leggere repository pubblici su GitHub non richiede autenticazione — chiunque può clonare e scaricare. Ma per scrivere (push, creare repository, aprire issue), GitHub deve sapere chi sei. Dal 2021, GitHub non accetta più le password per operazioni Git da terminale — servono metodi più sicuri.

Operazione Serve autenticazione?
Visitare github.com e navigare i repository No
git clone di un repository pubblico No
git push verso GitHub Sì
git clone di un repository privato Sì
Creare repository, issue, PR via API Sì

1.3 — I due metodi: SSH vs HTTPS

Ci sono due modi per autenticarti con GitHub dal terminale. Entrambi funzionano — la differenza è nella comodità.

🔑 SSH key (consigliata) ⭐
Generi una coppia di chiavi crittografiche (pubblica + privata) sul tuo computer. La chiave pubblica viene caricata su GitHub. Da quel momento, Git si autentica automaticamente — non devi più inserire credenziali.
URL del repository: git@github.com:utente/repo.git
🎫 Token HTTPS (alternativa)
Generi un “personal access token” su GitHub — una lunga stringa di caratteri che funziona come una password usa-e-getta. La inserisci quando Git la chiede (oppure la salvi nel credential manager del tuo OS).
URL del repository: https://github.com/utente/repo.git
SSH HTTPS + Token
Setup iniziale Più lungo (generare chiave, caricarla) Più veloce (generare token, copiare)
Uso quotidiano Zero credenziali — automatico Devi inserire il token (o configurare il credential manager)
Sicurezza Molto alta (crittografia a chiave pubblica) Alta (ma il token può essere copiato se esposto)
Funziona su reti restrittive A volte no (porta 22 bloccata) Sempre (porta 443, come i siti web)
Consigliato ⭐ Per l’uso quotidiano Come alternativa o su reti restrittive

📌 Consiglio: configura SSH come metodo principale. Se sei su una rete scolastica che blocca la porta 22, usa HTTPS come alternativa. Puoi avere entrambi configurati sullo stesso computer.

1.4 — Configurare SSH (metodo consigliato)

La configurazione SSH si fa una volta sola per computer. Dopodiché, ogni push e pull verso GitHub avviene automaticamente senza credenziali.

PASSO 1
Verifica
Controlla se hai già una chiave SSH: ls ~/.ssh/id_ed25519.pub. Se il file esiste, salta al Passo 3. Se dà errore “No such file”, vai al Passo 2.
PASSO 2
Genera
Genera una nuova coppia di chiavi con l’algoritmo Ed25519 (il più moderno e sicuro).
PASSO 3
Copia
Copia la chiave pubblica negli appunti.
PASSO 4
Carica
Carica la chiave pubblica su GitHub (Settings → SSH and GPG keys → New SSH key).
PASSO 5
Testa
Verifica che funzioni con ssh -T git@github.com.
# PASSO 2: Generare la chiave SSH
$ ssh-keygen -t ed25519 -C “tua@email-github.it”
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/tuonome/.ssh/id_ed25519): ← premi Invio (accetta il default)
Enter passphrase (empty for no passphrase): ← premi Invio (o scegli una passphrase per sicurezza extra)
Enter same passphrase again: ← premi Invio
Your identification has been saved in /Users/tuonome/.ssh/id_ed25519
Your public key has been saved in /Users/tuonome/.ssh/id_ed25519.pub
# PASSO 3: Copiare la chiave pubblica

# macOS:
$ pbcopy < ~/.ssh/id_ed25519.pub

# Windows (Git Bash):
$ cat ~/.ssh/id_ed25519.pub | clip

# Oppure semplicemente mostrala e copiala a mano:
$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ… tua@email-github.it
PASSO 4: Caricare la chiave su GitHub
4a
Vai su github.com → clicca la tua foto profilo (in alto a destra) → Settings.
4b
Nel menu a sinistra, clicca “SSH and GPG keys”.
4c
Clicca “New SSH key”. Nel campo Title scrivi un nome per il computer (es. “Laptop personale” o “PC scuola”). Nel campo Key, incolla la chiave pubblica copiata al Passo 3.
4d
Clicca “Add SSH key”. GitHub potrebbe chiederti di confermare la password.
# PASSO 5: Testare la connessione
$ ssh -T git@github.com
The authenticity of host ‘github.com (…)’ can’t be established.
Are you sure you want to continue connecting (yes/no)? ← scrivi “yes” e premi Invio
Hi tuousername! You’ve successfully authenticated, but GitHub does not provide shell access.
Se vedi “Hi tuousername!” hai finito — SSH è configurato correttamente. Il messaggio “does not provide shell access” è normale: significa che l’autenticazione funziona ma GitHub non è un server a cui puoi connetterti con terminale remoto.
🔑
Chiave privata
~/.ssh/id_ed25519 — resta sul tuo computer. Non condividerla mai con nessuno. È come la chiave di casa.
🌐
Chiave pubblica
~/.ssh/id_ed25519.pub — la carichi su GitHub. Puoi condividerla liberamente. È come il lucchetto che apri con la chiave.

1.5 — Configurare HTTPS con token (alternativa)

Se SSH non funziona (porta bloccata, computer condiviso), puoi usare un Personal Access Token (PAT) con HTTPS.

PASSO 1
Su GitHub: foto profilo → Settings → Developer settings (in fondo al menu) → Personal access tokens → Tokens (classic) → Generate new token (classic).
PASSO 2
Dai un nome al token (es. “PC scuola”). In Expiration scegli una durata (90 giorni per iniziare). In Scopes, seleziona almeno repo (accesso completo ai repository).
PASSO 3
Clicca “Generate token”. Copia subito il token! Non lo vedrai mai più — se lo perdi, devi generarne uno nuovo.
PASSO 4
Quando fai git push e Git chiede username e password: lo username è il tuo username GitHub, la password è il token (non la password dell’account).
# Salvare il token nel credential manager (per non reinserirlo ogni volta)

# macOS (usa il Keychain):
$ git config –global credential.helper osxkeychain

# Windows (usa il Credential Manager):
$ git config –global credential.helper manager

# Dopo la prima autenticazione, il token viene salvato e non serve più inserirlo.

⚠️ Non mettere mai il token nel codice o nei file! Il token è come una password — se finisce in un commit (anche per sbaglio), chiunque abbia accesso al repository può usarlo. GitHub scansiona automaticamente i repository e revoca i token esposti. Se succede, genera un nuovo token.

1.6 — GitHub Student Developer Pack

Se sei uno studente, GitHub offre un pacchetto gratuito con strumenti professionali del valore di migliaia di euro. Si chiama GitHub Student Developer Pack e include decine di tool e servizi.

🐙
GitHub Pro gratuito
Repository privati illimitati, GitHub Copilot, Actions con più minuti, e molto altro.
☁️
Cloud e hosting
Crediti gratuiti per Azure, DigitalOcean, Heroku, Namecheap (dominio .me gratuito).
🛠️
Tool professionali
JetBrains IDE, GitKraken Pro, Canva Pro, Bootstrap Studio, e decine di altri strumenti.
Come richiederlo
2
Clicca “Get your Pack” → “I am a student”.
3
Verifica il tuo status di studente: puoi usare l’email della scuola (se ne hai una tipo nome@scuola.edu.it) oppure caricare un documento che dimostra l’iscrizione (tessera studente, certificato).
4
L’approvazione richiede da poche ore a qualche giorno. Una volta approvato, tutti i vantaggi si attivano automaticamente.

📌 Anche gli insegnanti hanno un programma dedicato: GitHub Education per insegnanti offre GitHub Team gratuito per le classi, accesso a GitHub Classroom e tutti gli strumenti del pack. Se sei un docente, vale la pena richiederlo prima di iniziare il Modulo 7.


💻 2. Esempi guidati

Esempio A — Setup SSH completo su macOS

# 1. Verifica se esiste già una chiave
$ ls ~/.ssh/id_ed25519.pub
ls: /Users/mario/.ssh/id_ed25519.pub: No such file or directory ← non esiste, creiamola

# 2. Genera la chiave
$ ssh-keygen -t ed25519 -C “mario.rossi@email.it”
# Premi Invio 3 volte (accetta percorso default, niente passphrase)

# 3. Avvia l’SSH agent e aggiungi la chiave
$ eval “$(ssh-agent -s)”
Agent pid 12345
$ ssh-add ~/.ssh/id_ed25519

# 4. Copia la chiave pubblica
$ pbcopy < ~/.ssh/id_ed25519.pub
# Vai su GitHub → Settings → SSH keys → New SSH key → incolla → Add

# 5. Testa la connessione
$ ssh -T git@github.com
Hi mario-rossi! You’ve successfully authenticated, but GitHub does not provide shell access.

Esempio B — Setup SSH completo su Windows (Git Bash)

# 1. Verifica se esiste già una chiave
$ ls ~/.ssh/id_ed25519.pub
ls: cannot access ‘/c/Users/mario/.ssh/id_ed25519.pub’: No such file or directory

# 2. Genera la chiave
$ ssh-keygen -t ed25519 -C “mario.rossi@email.it”
# Premi Invio 3 volte

# 3. Avvia l’SSH agent
$ eval “$(ssh-agent -s)”
$ ssh-add ~/.ssh/id_ed25519

# 4. Copia la chiave pubblica
$ cat ~/.ssh/id_ed25519.pub | clip
# Vai su GitHub → Settings → SSH keys → incolla → Add

# 5. Testa
$ ssh -T git@github.com
Hi mario-rossi! You’ve successfully authenticated, but GitHub does not provide shell access.

Esempio C — Setup HTTPS con token

# 1. Genera il token su GitHub (vedi sezione 1.5)
# 2. Configura il credential helper

# macOS:
$ git config –global credential.helper osxkeychain

# Windows:
$ git config –global credential.helper manager

# 3. La prima volta che fai push, Git chiede le credenziali:
$ git push origin main
Username for ‘https://github.com’: ← il tuo username GitHub
Password for ‘https://mario-rossi@github.com’: ← incolla il TOKEN (non la password!)

# Da adesso in poi il credential helper ricorda il token — non lo chiederà più.

🏋️ 3. Esercizi

🟢 Esercizio 1 — Crea il tuo account (Facile)

a) Crea un account su github.com con un username professionale.
b) Verifica l’email (controlla anche la cartella spam).
c) Verifica che l’email del tuo account GitHub corrisponda a quella configurata in Git: git config --global user.email. Se sono diverse, aggiornala.
d) Vai sul tuo profilo (github.com/tuousername) — è la tua pagina pubblica. Cosa vedi?

🔵 Esercizio 2 — Configura SSH (Medio)

a) Segui l’Esempio A (macOS) o B (Windows) per generare una chiave SSH.
b) Carica la chiave pubblica su GitHub.
c) Testa con ssh -T git@github.com. Vedi il messaggio “Hi tuousername!”?
d) Se la prima volta dice “The authenticity of host… can’t be established” e chiede “yes/no”, scrivi “yes”. È normale: stai dicendo al tuo computer di fidarsi di github.com.
e) Esegui di nuovo ssh -T git@github.com. Questa volta non dovrebbe più chiedere conferma.

🟠 Esercizio 3 — Verifica completa (Medio)

Esegui questa checklist e metti una spunta per ogni voce completata:

☐ Account GitHub creato con username professionale
☐ Email verificata
☐ Email GitHub = email di git config --global user.email
☐ Chiave SSH generata (oppure token HTTPS creato)
☐ Chiave pubblica caricata su GitHub (oppure credential helper configurato)
☐ ssh -T git@github.com funziona (oppure push di test con token funziona)
☐ Richiesto GitHub Student Developer Pack (opzionale ma consigliato)

🟣 Esercizio 4 — Capire la crittografia a chiave pubblica (Difficile)

Questo esercizio è concettuale — aiuta a capire perché SSH è sicuro:

a) Apri la tua chiave pubblica con cat ~/.ssh/id_ed25519.pub. Quanti caratteri ha? Potresti indovinarla? (No — è generata casualmente ed è lunghissima.)
b) Apri la chiave privata con cat ~/.ssh/id_ed25519. È più lunga o più corta della pubblica?
c) Spiega con parole tue: perché è sicuro condividere la chiave pubblica ma non quella privata? (Suggerimento: pensa a un lucchetto e una chiave. Puoi dare il lucchetto a chiunque, ma solo tu hai la chiave per aprirlo.)
d) Se un compagno ti chiede la chiave SSH per “aiutarti a configurare GitHub”, cosa gli rispondi? (Mai dare la chiave privata! Quella pubblica puoi condividerla, ma non serve al compagno per il tuo account.)
e) Se perdi il computer, il tuo account GitHub è compromesso? (No — puoi rimuovere la chiave SSH dalle impostazioni di GitHub da un altro dispositivo. Poi generi una nuova chiave sul nuovo computer.)

❓ 4. Quiz di verifica

1. Perché GitHub non accetta più le password per le operazioni Git da terminale?

Mostra risposta

Per ragioni di sicurezza. Le password possono essere deboli, riutilizzate su più siti, o rubate tramite phishing. Le chiavi SSH e i token sono molto più sicuri: le chiavi SSH usano crittografia a chiave pubblica (praticamente impossibile da violare), e i token possono avere durata limitata, permessi specifici e possono essere revocati singolarmente. Con i token, se ne viene compromesso uno, puoi revocarlo senza cambiare la password dell’account. Questa modifica è stata introdotta da GitHub nel 2021.


2. Qual è la differenza tra chiave SSH pubblica e privata?

Mostra risposta

La chiave privata (id_ed25519) resta sul tuo computer e non deve essere condivisa con nessuno — è come la chiave di casa. La chiave pubblica (id_ed25519.pub) viene caricata su GitHub e può essere condivisa liberamente — è come il lucchetto. GitHub usa la chiave pubblica per verificare che i dati provengano dal possessore della chiave privata corrispondente. Senza la chiave privata, la pubblica da sola è inutile — non permette a nessuno di autenticarsi.


3. Perché è importante che l’email di Git config e quella di GitHub corrispondano?

Mostra risposta

Perché GitHub collega i commit al profilo dell’autore tramite l’email. Ogni commit contiene l’email impostata con git config. Quando fai push su GitHub, il sistema cerca un account con la stessa email: se lo trova, il commit appare nel tuo profilo, nel grafico dei contributi e con la tua foto. Se l’email non corrisponde, il commit viene mostrato come fatto da un utente anonimo — non viene contato nel tuo profilo e non viene collegato a te. Puoi aggiungere più email al tuo account GitHub in Settings → Emails.


4. SSH non funziona a scuola — la connessione viene rifiutata. Cosa fai?

Mostra risposta

È probabile che la rete della scuola blocchi la porta 22 (usata da SSH). Hai due opzioni. La prima: usa HTTPS con token (che usa la porta 443, la stessa dei siti web — non viene mai bloccata). La seconda: configura SSH per usare la porta 443 tramite il server ssh.github.com aggiungendo al file ~/.ssh/config le righe: Host github.com, Hostname ssh.github.com, Port 443. L’opzione HTTPS è la più semplice come alternativa immediata.


5. Cos’è il GitHub Student Developer Pack e come si ottiene?

Mostra risposta

È un pacchetto gratuito di strumenti professionali offerto da GitHub agli studenti verificati. Include GitHub Pro (repository privati illimitati, Copilot), crediti cloud (Azure, DigitalOcean), IDE professionali (JetBrains), e decine di altri tool. Si richiede su education.github.com/pack verificando il proprio status di studente tramite email scolastica o documento di iscrizione. L’approvazione richiede da poche ore a qualche giorno. È completamente gratuito e vale la pena richiederlo.


6. Hai accidentalmente incollato il tuo token HTTPS in un file e l’hai committato. Cosa fai?

Mostra risposta

Azione immediata: revoca il token su GitHub (Settings → Developer settings → Personal access tokens → elimina il token compromesso). GitHub probabilmente lo revocherà automaticamente perché scansiona i repository pubblici alla ricerca di credenziali esposte. Poi genera un nuovo token. Per rimuovere il commit con il token dalla storia, se non è stato pushato usa git reset HEAD~1. Se è stato pushato, la situazione è più complessa — il token va comunque considerato compromesso e revocato immediatamente, indipendentemente da cosa fai con la storia. La prevenzione migliore: non salvare mai credenziali nei file e usa un .gitignore.


📚 Riepilogo della lezione

Cosa hai imparato oggi:
  • Account GitHub: username professionale, email uguale a git config, piano Free
  • GitHub serve autenticazione per push, repo privati e operazioni di scrittura
  • SSH ⭐: genera chiave con ssh-keygen -t ed25519 → carica pubblica su GitHub → automatico per sempre
  • HTTPS + token: genera token su GitHub → inserisci al primo push → credential helper lo ricorda
  • Chiave privata = mai condividere · Chiave pubblica = carica su GitHub
  • Test SSH: ssh -T git@github.com → deve dire “Hi tuousername!”
  • Student Developer Pack: strumenti gratuiti su education.github.com/pack
  • Mai mettere token o credenziali nel codice o nei file committati

Prossima lezione →

Lezione 14 — Repository remoto
git clone, git push, git pull, git fetch.
Collegare un repo locale a GitHub. Origin e upstream.

Corso Git & GitHub · Per studenti e insegnanti · Lezione 13 di 45