Introduzione
Git è un sistema di controllo della versione distribuito, il che significa che puoi lavorare localmente, quindi condividere o "inviare" le modifiche a un server. In questo caso, il server è GitLab.
GitLab utilizza il protocollo SSH per comunicare in modo sicuro con Git. Quando utilizzi le chiavi SSH per autenticarti sul server remoto GitLab, non è necessario fornire ogni volta nome utente e password.
Prerequisiti
Per utilizzare SSH per comunicare con GitLab, è necessario:
- Il client OpenSSH, che viene fornito preinstallato su GNU/Linux, macOS e Windows 10.
- SSH versione 6.5 o successiva. Le versioni precedenti utilizzavano una firma MD5, che non è sicura.
Per visualizzare la versione di SSH installata sul tuo sistema, esegui ssh -V
:
ssh -V
GitLab non supporta l'installazione su Microsoft Windows, ma puoi configurare le chiavi SSH sul client Windows.
Tipi di chiavi SSH supportati
Per comunicare con GitLab, puoi utilizzare i seguenti tipi di chiavi SSH:
- ED25519
- RSA
- DSA (Sconsigliata a GitLab 11.0.)
- ECDSA (come indicato in Practical Cryptography With Go, i problemi di sicurezza relativi a DSA si applicano anche a ECDSA.)
Gli amministratori possono limitare le chiavi consentite e la loro lunghezza minima.
Verifica se hai una coppia di chiavi SSH esistente
Prima di creare una coppia di chiavi, verifica se esiste già una coppia di chiavi.
Su Linux o macOS, vai alla tua directory home.
Vai alla sottodirectory .ssh/
.
Verifica se esiste un file con uno dei seguenti formati:
Algoritmo | Chiave pubblica | Chiave privata |
---|---|---|
ED25519 (preferito) | id_ed25519.pub | id_ed25519 |
RSA (dimensione della chiave di almeno 2048 bit) | id_rsa.pub | id_rsa |
Annunci dinamici della rete di ricerca (obsoleto) | id_dsa.pub | id_dsa |
ECDSA | id_ecdsa.pub | id_ecdsa |
Generare una coppia di chiavi SSH
Se non disponi di una coppia di chiavi SSH esistente, generane una nuova.
Apri un terminale.
Digita ssh-keygen -t
seguito dal tipo di chiave e da un commento facoltativo. Questo commento verrà incluso nel file creato.pub
. Potresti voler utilizzare un indirizzo email per il commento.
Ad esempio, per il formato ED25519 digita il seguente comando:
ssh-keygen -t ed25519 -C "tuo commento"
Per il formato RSA a 2048 bit:
ssh-keygen -t rsa -b 2048 -C "tuo commento"
Premere Invio. Viene visualizzato un output simile al seguente:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Accetta il nome file e la directory suggeriti, a meno che non si stia generando una chiave di distribuzione o si desideri salvare in una directory specifica in cui si memorizzano altre chiavi.
Specifica una passphrase:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Viene visualizzata una conferma, incluse le informazioni sulla posizione in cui sono archiviati i file.
Vengono generate una chiave pubblica e una privata. Aggiungi la chiave SSH pubblica al tuo account GitLab e mantieni la chiave privata al sicuro.
Configurare SSH in modo che punti a una directory diversa
Se non hai salvato la coppia di chiavi SSH nella directory predefinita, configura il tuo client SSH in modo che punti alla directory in cui è archiviata la chiave privata.
Apri un terminale ed esegui questo comando:
eval $(ssh-agent -s)
ssh-add <directory to private SSH key>
Salva queste impostazioni nel file ~/.ssh/config
. Per esempio:
# GitLab.com
Host gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_com_rsa
# Private GitLab instance
Host gitlab.company.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/example_com_rsa
Per ulteriori informazioni su queste impostazioni, vedere la pagina man ssh_config
nel manuale di configurazione SSH:
man ssh_config
Le chiavi SSH pubbliche devono essere univoche per GitLab perché si legano al tuo account. La tua chiave SSH è l'unico identificatore che hai quando inserisci il codice con SSH. Deve mappare in modo univoco a un singolo utente.
Conclusione
In questo tutorial abbiamo visto come generare una chiave pubblica SSH per GitLab (public SSH keys).