Come generare e utilizzare le chiavi SSH di GitLab

Le richieste frequenti di username e password sono noiose e fanno perdere tempo. Se utilizzi l’autenticazione con password con il tuo account Gitlab, ogni azione richiede che tu invii le tue credenziali, sia come parte del comando, sia tramite un prompt interattivo.

In particolare quando si automatizzano le tubature CI/CD in GitLab, l’autenticazione con password può risultare inefficiente e un possibile rischio per la sicurezza. Perché non terminare le tue sofferenze e passare all’autenticazione Secure Shell (SSH) utilizzando le chiavi SSH di Gitlab? Continua a leggere per saperne di più!

Alla fine di questo tutorial, avrai generato una coppia di chiavi SSH, utilizzato la chiave per autenticarti e pubblicare un nuovo progetto su Gitlab.

Prerequisiti

Questo tutorial è una dimostrazione pratica. Per seguire la procedura, assicurati di preparare i seguenti requisiti.

  • Il tuo account GitLab. Se non ne possiedi ancora uno, iscriviti per un account gratuito prima.
  • A computer to use as your Gitlab SSH client. This tutorial will be using an Ubuntu 20.04 LTS computer but should work with Windows and macOS too.
  • Aggiorna o Installa Git. L’ultima versione al momento della scrittura è la 2.25.1.

Visual Studio Code (VS Code). L’esempio in questo tutorial utilizzerà VS Code 1.62.3.

Generazione di una coppia di chiavi SSH di Gitlab

Le chiavi SSH o una coppia di chiavi consiste in chiavi private e pubbliche. In poche parole, la chiave privata è ciò che il client (il tuo computer) presenta al server (Gitlab) per l’autenticazione, e la chiave pubblica è ciò che il server utilizza per decodificare la tua chiave privata. E se entrambe le chiavi corrispondono, l’autenticazione viene superata.

GitLab supporta due tipi di coppie di chiavi SSH, le chiavi SSH RSA e ED25519. Ma in questo esempio, genererai la coppia di chiavi ED25519 in quanto è considerata più sicura delle chiavi RSA. Segui i passaggi di seguito per generare una coppia di chiavi SSH.

1. Sul tuo desktop, apri una sessione terminale e esegui il comando seguente. Questo comando apre la tua directory home in VS Code.

code ~

2. Su VS Code, fai clic su Terminale -> Nuovo terminale.

Opening a new terminal instance in VSCode

3. Nel terminale di VS Code, esegui il comando ssh-keygen -t di seguito per generare il tipo di chiave SSH ED25519. Il tag del commento -C è facoltativo ma consigliato per rendere le tue chiavi più identificabili.

ssh-keygen -t ed25519 -C "Gitlab SSH Key"

4. Alla successiva richiesta del percorso in cui salvare la chiave, premi Invio per accettare il nome del file predefinito. Il nome del file dovrebbe essere simile a /home/<username>/.ssh/id_ed25519, dove <username> è il tuo nome utente.

Accepting the default filename

5. Successivamente, lascia vuota la passphrase e premi Invio due volte. In questo modo, creerai una coppia di chiavi SSH senza password.

Leaving the passphrase empty

Dovresti vedere un risultato simile alla schermata mostrata di seguito, che mostra la posizione della chiave privata (id_ed25519) e della chiave pubblica (id_ed25519.pub).

La chiave privata e quella pubblica hanno lo stesso nome di base. Ma la chiave pubblica ha l’estensione .pub, mentre la chiave privata non ha un’estensione.

Generating the Gitlab SSH key pair

Aggiunta della chiave SSH di Gitlab al tuo profilo

Ricorda che la chiave privata rimane sul tuo computer, mentre la chiave pubblica dovrebbe trovarsi sul server Gitlab. Quindi, dopo aver generato le chiavi SSH, il tuo passo successivo è caricare la chiave pubblica nel tuo account Gitlab. Per farlo, procedi come segue.

1. Apri il file della tua chiave pubblica in VSCode. Nella barra di esplorazione, espandi la cartella .ssh e fai clic su id_es25519.pub. Successivamente, seleziona la chiave pubblica e copiala negli appunti.

Copying the public key

2. Ora apri un browser web, vai su https://gitlab.com e accedi al tuo account Gitlab.

3. Dopo aver effettuato il login, vai alle impostazioni del profilo Chiavi SSH su https://gitlab.com/-/profile/keys.

  • Incolla la chiave pubblica che hai copiato in precedenza nel campo Chiave.
  • Il campo Titolo viene automaticamente compilato con la parte commento della tua chiave pubblica. Lascia il valore del titolo come è o inserisci il valore preferito.
  • Opzionalmente, specifica una data di scadenza nel campo Scade il.
  • Infine, clicca su Aggiungi chiave.
Adding the Gitlab SSH key to your profile

Utilizzare la tua chiave SSH di Gitlab

Fino ad ora, hai generato la chiave SSH e l’hai caricata sul tuo account Gitlab. Ora devi verificare se la tua chiave SSH funziona utilizzandola per connetterti e autenticarti su Gitlab.

Accesso

Nel terminale di VS Code, collegati al tuo account Gitlab eseguendo il comando seguente.

ssh -T [email protected]

Presumendo che ti stai collegando per la prima volta, il comando ti chiede di verificare l’autenticità dell’host e confermare la connessione. Digita yes al prompt e premi Enter per confermare.

Nota che non hai dovuto inserire un nome utente e una password per accedere? Invece, il comando ssh utilizza automaticamente le tue chiavi SSH per l’autenticazione. Dopo un accesso riuscito, dovresti vedere un messaggio di benvenuto che dice: “Benvenuto in Gitlab @nomeutente!“.

Logging in to Gitlab via SSH

Pubblicazione di un nuovo progetto

Hai verificato che la tua chiave SSH di Gitlab funziona e ti consente di autenticarti correttamente. Ma funziona anche quando interagisci con Gitlab tramite Git? Perché non testarlo pubblicando un nuovo repository Gitlab?

1. Inizializza prima la configurazione di Git e impostala con il tuo nome utente e indirizzo email dell’account Gitlab. Sulla console di VS Code, esegui i comandi git config di seguito per specificare rispettivamente il tuo nome utente e l’indirizzo email di Gitlab.

git config --global user.name "your_username"
git config --global user.email "[email protected]"

Il comando eseguito dovrebbe aggiornare o creare il file ~/.gitconfig con le informazioni fornite.

Initializing the Git configuration

2. Successivamente, crea una cartella nella tua directory home per il tuo nuovo repository. Denomina la nuova cartella come my-first-project.

Il nome della cartella diventerà anche il nome del tuo progetto di repository Gitlab.

# Crea una nuova cartella
mkdir ~/my-first-project
# Cambia la directory di lavoro alla nuova cartella
cd ~/my-first-project

3. Inizializza il repository eseguendo il comando di seguito. Assicurati di cambiare <username> con il tuo nome utente Gitlab.

git init

Dovresti vedere un messaggio di conferma simile allo screenshot qui sotto.

Initializing a new repository

4. Successivamente, specifica l’indirizzo remoto del repository Git per il tuo progetto. Questo indirizzo del repository determina se autenticarti con chiavi SSH o con nome utente e password.

Trova la sintassi di seguito, in cui <username> è il tuo nome utente Gitlab e <project-name> è il nome del repository Gitlab. Nota che l’indirizzo del repository inizia con [email protected], il che indica che ti autenticherai con la chiave SSH invece di un nome utente e una password.

git remote add origin git@gitlab.com:<username>/<project-name>.git

Supponiamo che il nome utente di Gitlab sia kevin, e il nome del repository sia my-first-project. Ora esegui il comando nel terminale come segue.

git remote add origin git@gitlab.com:kevin/my-first-project.git

5. Esegui il comando di seguito per creare un file vuoto nel tuo repository chiamato README.md.

touch README.md

6. Apri il file README.md per modificarlo e incolla il seguente contenuto nel file. Salva il file dopo la modifica. Il mio primo progetto per dimostrare le chiavi SSH di Gitlab.

My first project to demonstrate Gitlab SSH keys.
Creating a file and adding content

7. Ora, digita a Git di aggiungere il nuovo file README.md al repository e di effettuare il commit delle modifiche.

git add README.md
git commit -m "My first commit"

Dovresti vedere un output simile a quello mostrato di seguito.

Adding a file and committing changes to the repository

8. Infine, è ora di pubblicare il tuo nuovo repository. Esegui il comando di seguito per inviare il repository dal tuo computer al tuo account Gitlab.

git push --all origin

Come puoi vedere di seguito, la creazione del progetto è stata completata con successo e non ci sono state richieste di credenziali! Git ha utilizzato le tue chiavi SSH per autenticarsi con Gitlab.

Creating a repository in Gitlab

9. Infine, conferma che il tuo nuovo progetto Gitlab esista online. Utilizzando il tuo browser, vai su https://gitlab.com/dashboard/projects per visualizzare un elenco dei tuoi progetti esistenti. Dovresti quindi vedere il nome my-first-project nell’elenco.

Viewing the Projects list in Gitlab

10. Inoltre, clicca sul nome del progetto e dovresti vedere il file README.md e il suo contenuto.

Viewing the README file

Conclusione

Congratulazioni per essere arrivato fino a qui in questo tutorial! Durante questo tutorial passo dopo passo, hai imparato come generare e utilizzare chiavi SSH per effettuare distribuzioni sicure di controllo versione nel tuo repository GitLab.

Con questa conoscenza, ora puoi eseguire operazioni sui tuoi repository GitLab senza preoccuparti di esporre involontariamente il tuo nome utente e la tua password.

Hai mai utilizzato l’autenticazione con chiave SSH su GitLab in precedenza? Com’è stata l’esperienza? Consiglieresti anche ad altri di utilizzare le chiavi SSH o ci sono ragioni per evitare di farlo? Facci sapere.

Source:
https://adamtheautomator.com/gitlab-ssh/