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
🌐 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
git config nella Lezione 02!), una password robusta e scegli un username.mrossi-dev
giulia-bianchi
luca-dev-2026
test12345
aaaaaaa
il_migliore_2006
⚠️ 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à.
git@github.com:utente/repo.githttps://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.
Verifica
ls ~/.ssh/id_ed25519.pub. Se il file esiste, salta al Passo 3. Se dà errore “No such file”, vai al Passo 2.Genera
Copia
Carica
Testa
ssh -T git@github.com.$ 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
# 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
$ 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.
~/.ssh/id_ed25519 — resta sul tuo computer. Non condividerla mai con nessuno. È come la chiave di casa.~/.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.
git push e Git chiede username e password: lo username è il tuo username GitHub, la password è il token (non la password dell’account).# 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.
nome@scuola.edu.it) oppure caricare un documento che dimostra l’iscrizione (tessera studente, certificato).📌 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
$ 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)
$ 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
# 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)
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)
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)
☐ 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:
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
- 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 remotogit 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