Gestione delle Chiavi SSH in Git
L’uso delle chiavi SSH è un metodo sicuro e conveniente per autenticarsi con i repository remoti in Git, come quelli ospitati su GitHub, GitLab e Bitbucket. Le chiavi SSH permettono di accedere ai repository senza dover inserire la password ogni volta, aumentando sia la sicurezza che l’efficienza nel lavoro quotidiano. In questa guida, esploreremo come generare, configurare e gestire le chiavi SSH per l’uso con Git, e come gestire in sicurezza queste chiavi.
Cos’è una Chiave SSH?
Una chiave SSH è una coppia di chiavi crittografiche: una chiave pubblica e una chiave privata. La chiave privata rimane sul tuo computer, mentre la chiave pubblica viene aggiunta al servizio Git (come GitHub o GitLab). Quando ti connetti al repository remoto, il servizio verifica la tua identità confrontando la chiave pubblica con la chiave privata, permettendoti di accedere senza bisogno di una password.
Generare una Chiave SSH
Prima di poter utilizzare SSH con Git, devi generare una coppia di chiavi SSH sul tuo computer.
Generare una Chiave SSH su macOS o Linux
-
Apri il terminale.
-
Esegui il seguente comando per generare una nuova chiave SSH:
ssh-keygen -t rsa -b 4096 -C "tuoindirizzo@email.com"
-t rsa
specifica l’algoritmo di crittografia RSA.-b 4096
imposta la lunghezza della chiave a 4096 bit, che è consigliato per una maggiore sicurezza.-C "tuoindirizzo@email.com"
associa la chiave al tuo indirizzo email.
-
Quando richiesto, scegli il percorso per salvare la chiave (puoi premere
Invio
per accettare il percorso predefinito~/.ssh/id_rsa
). -
Scegli una passphrase sicura o lascia vuoto se non vuoi proteggere la chiave con una passphrase.
Generare una Chiave SSH su Windows
Su Windows, puoi generare una chiave SSH utilizzando Git Bash o PuTTYgen (parte del pacchetto PuTTY):
- Usando Git Bash: Segui gli stessi passaggi di macOS/Linux utilizzando Git Bash, che è incluso con Git for Windows.
- Usando PuTTYgen:
- Apri PuTTYgen e seleziona RSA come tipo di chiave, con una lunghezza di 4096 bit.
- Clicca su “Generate” e segui le istruzioni.
- Salva la chiave privata e copia la chiave pubblica nel tuo profilo Git.
Aggiungere la Chiave SSH al Servizio Git
Dopo aver generato la chiave SSH, devi aggiungere la chiave pubblica al tuo account su GitHub, GitLab, o altro servizio Git.
Aggiungere la Chiave SSH su GitHub
-
Copia la chiave pubblica nel tuo clipboard:
cat ~/.ssh/id_rsa.pub | pbcopy # macOS cat ~/.ssh/id_rsa.pub | xclip -selection clipboard # Linux
Su Windows, puoi aprire il file
id_rsa.pub
con un editor di testo e copiare il contenuto manualmente. -
Vai su GitHub e accedi alle Impostazioni.
-
Nella sezione SSH and GPG keys, clicca su New SSH key.
-
Incolla la chiave pubblica nel campo Key e dai un nome alla chiave.
-
Clicca su Add SSH key.
Aggiungere la Chiave SSH su GitLab
- Copia la chiave pubblica nel tuo clipboard utilizzando lo stesso comando di cui sopra.
- Accedi a GitLab e vai su Impostazioni > Chiavi SSH.
- Incolla la chiave pubblica nel campo Key.
- Assegna un titolo alla chiave per riconoscerla facilmente.
- Clicca su Aggiungi chiave.
Configurare Git per Usare la Chiave SSH
Una volta che la chiave SSH è stata aggiunta al servizio Git, puoi configurare Git per utilizzare l’SSH invece di HTTPS quando accedi ai repository.
Verificare la Configurazione SSH
Per assicurarti che la configurazione SSH funzioni correttamente, esegui:
ssh -T git@github.com
Se stai usando GitLab:
ssh -T git@gitlab.com
Dovresti ricevere una risposta che conferma l’autenticità della connessione.
Configurare un Remote per Usare SSH
Se hai già clonato un repository utilizzando HTTPS, puoi cambiare l’URL del remote per utilizzare SSH:
git remote set-url origin git@github.com:utente/repository.git
Questo comando aggiorna l’URL del remote origin
per utilizzare SSH.
Gestire PiĂą Chiavi SSH
Se lavori con piĂą account GitHub o GitLab, potresti avere la necessitĂ di gestire piĂą chiavi SSH.
Creare Configurazioni Personalizzate con SSH Config
Puoi configurare il file ~/.ssh/config
per gestire piĂą chiavi SSH. Ecco un esempio di configurazione:
Host github-personale
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personale
Host github-lavoro
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_lavoro
Questa configurazione ti permette di usare github-personale
o github-lavoro
come host quando cloni o accedi ai repository:
git clone git@github-personale:utente/repository.git
Proteggere le Chiavi SSH
La chiave privata SSH deve essere protetta in modo rigoroso, poiché chiunque la possiede può accedere ai repository associati.
Usare una Passphrase
Proteggi la tua chiave privata con una passphrase forte. Se non hai impostato una passphrase quando hai generato la chiave, puoi aggiungerne una con:
ssh-keygen -p -f ~/.ssh/id_rsa
Gestire le Chiavi con ssh-agent
Puoi usare ssh-agent
per memorizzare la passphrase della tua chiave privata per la sessione corrente, evitando di doverla inserire ogni volta.
Avvia ssh-agent
e aggiungi la tua chiave privata:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
Revocare una Chiave SSH
Se una chiave SSH viene compromessa, revoca immediatamente l’accesso rimuovendo la chiave dal servizio Git e generandone una nuova.
Best Practices per la Gestione delle Chiavi SSH
- Utilizza Passphrase: Proteggi sempre le tue chiavi private con una passphrase per evitare accessi non autorizzati.
- Mantieni le Chiavi Sicure: Non condividere mai la tua chiave privata e mantienila in un luogo sicuro.
- Revoca le Chiavi Non Utilizzate: Se una chiave non è più necessaria, rimuovila dal servizio Git per ridurre i rischi di sicurezza.
- Usa ssh-agent: Utilizza
ssh-agent
per gestire le chiavi durante la sessione senza dover inserire ripetutamente la passphrase.
Risolvere Problemi Comuni
Accesso SSH Fallito
Se ricevi errori di accesso, verifica che la chiave pubblica sia stata correttamente aggiunta al servizio Git e che l’URL del remote sia configurato correttamente.
Chiavi SSH Multiple Non Funzionano
Se hai configurato chiavi SSH multiple, assicurati che il file ~/.ssh/config
sia configurato correttamente e che stai utilizzando l’host appropriato quando accedi ai repository.
Conclusione
Gestire le chiavi SSH in Git è fondamentale per garantire un accesso sicuro ai repository remoti e per semplificare il flusso di lavoro quotidiano. Configurando correttamente le chiavi SSH e seguendo le best practices per la loro gestione, puoi migliorare la sicurezza dei tuoi progetti e lavorare in modo più efficiente. Con la configurazione giusta, l’uso delle chiavi SSH diventa un processo senza soluzione di continuità che protegge il tuo codice e semplifica la collaborazione.