🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Gestione delle Chiavi SSH in Git

Codegrind Team•Aug 28 2024

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

  1. Apri il terminale.

  2. 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.
  3. Quando richiesto, scegli il percorso per salvare la chiave (puoi premere Invio per accettare il percorso predefinito ~/.ssh/id_rsa).

  4. 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:
    1. Apri PuTTYgen e seleziona RSA come tipo di chiave, con una lunghezza di 4096 bit.
    2. Clicca su “Generate” e segui le istruzioni.
    3. 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

  1. 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.

  2. Vai su GitHub e accedi alle Impostazioni.

  3. Nella sezione SSH and GPG keys, clicca su New SSH key.

  4. Incolla la chiave pubblica nel campo Key e dai un nome alla chiave.

  5. Clicca su Add SSH key.

Aggiungere la Chiave SSH su GitLab

  1. Copia la chiave pubblica nel tuo clipboard utilizzando lo stesso comando di cui sopra.
  2. Accedi a GitLab e vai su Impostazioni > Chiavi SSH.
  3. Incolla la chiave pubblica nel campo Key.
  4. Assegna un titolo alla chiave per riconoscerla facilmente.
  5. 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.