Herhaalde gebruikersnaam- en wachtwoordverzoeken zijn vervelend en tijdrovend. Als je wachtwoordauthenticatie gebruikt voor je GitLab-account, vereist elke handeling dat je je referenties verzendt, ofwel als onderdeel van de opdracht of via een interactieve prompt.
Vooral bij het automatiseren van de CI/CD-pipelines in GitLab kan wachtwoordauthenticatie inefficiënt zijn en een mogelijk beveiligingsrisico vormen. Waarom beëindig je je lijden niet en schakel je over naar Secure Shell (SSH)-authenticatie met GitLab SSH-sleutels? Lees verder en ontdek hoe!
Aan het einde van deze tutorial heb je een SSH-sleutelpaar gegenereerd, de sleutel gebruikt om te authenticeren en een nieuw GitLab-project gepubliceerd.
Vereisten
Deze tutorial is een praktische demonstratie. Zorg ervoor dat je aan de volgende vereisten voldoet om mee te doen.
- Je GitLab-account. Als je er nog geen hebt, meld je dan aan voor een gratis account eerst.
- 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.
- Update of installeer Git. De nieuwste versie op het moment van schrijven is 2.25.1.
Visual Studio Code (VS Code). Het voorbeeld in deze tutorial maakt gebruik van VS Code 1.62.3.
Het genereren van een Gitlab SSH-sleutelpaar
SSH-sleutels of een sleutelpaar bestaan uit privé- en openbare sleutels. Kort gezegd is de privésleutel wat de client (jouw computer) aan de server (Gitlab) presenteert voor authenticatie, en de openbare sleutel is wat de server gebruikt om jouw privésleutel te decoderen. Als beide sleutels overeenkomen, slaagt de authenticatie.
GitLab ondersteunt twee soorten SSH-sleutelparen, de RSA– en ED25519-SSH-sleutels. Maar in dit voorbeeld genereer je het ED25519-sleutelpaar omdat het als veiliger wordt beschouwd dan RSA-sleutels. Volg de onderstaande stappen om een SSH-sleutelpaar te genereren.
1. Open op je desktop een terminalsessie en voer de onderstaande opdracht uit. Deze opdracht opent je thuismap in VS Code.
2. Klik in VS Code op Terminal —> Nieuwe Terminal.

3. Voer op de VS Code-terminal het ssh-keygen -t
commando uit om het ED25519
SSH-sleuteltype te genereren. De opmerkingtag -C
is optioneel maar aanbevolen om uw sleutels beter herkenbaar te maken.
4. Druk bij de volgende prompt waar wordt gevraagd waar de sleutel op te slaan op Enter om de standaardbestandsnaam te accepteren. De bestandsnaam moet vergelijkbaar zijn met /home/<username>/.ssh/id_ed25519, waar <username> uw gebruikersnaam is.

5. Laat vervolgens het wachtwoord leeg en druk twee keer op Enter. Hierdoor wordt een SSH-sleutelpaar zonder wachtwoord aangemaakt.

U zou een vergelijkbaar resultaat moeten zien als op de onderstaande schermafbeelding waarin de locaties van de privésleutel (id_ed25519) en de openbare sleutel (id_ed25519.pub) worden weergegeven.
De privé- en openbare sleutels hebben dezelfde basisbestandsnaam. Maar de openbare sleutel heeft een extensie .pub, terwijl de privésleutel geen extensie heeft.

Het toevoegen van de Gitlab SSH-sleutel aan uw profiel
Onthoud dat de privésleutel op uw computer blijft, terwijl de openbare sleutel op de Gitlab-server moet staan. Nadat u de SSH-sleutels hebt gegenereerd, is uw volgende stap het uploaden van de openbare sleutel naar uw Gitlab-account. Doe dit als volgt.
1. Open uw openbare sleutelbestand in VSCode. Breid in het Explorer-paneel de .ssh-map uit en klik op id_es25519.pub. Selecteer vervolgens de openbare sleutel en kopieer deze naar het klembord.

2. Open nu een webbrowser, ga naar https://gitlab.com en log in op uw Gitlab-account.
3. Na het inloggen, navigeer naar de profielinstellingen van de SSH-sleutels op https://gitlab.com/-/profile/keys.
- Plak de openbare sleutel die je eerder hebt gekopieerd in het veld Sleutel.
- Het veld Titel wordt automatisch ingevuld met het opmerkingsgedeelte van je openbare sleutel. Laat de titelwaarde zoals die is of voer je voorkeurswaarde in.
- Optioneel, geef een vervaldatum op in het veld Vervalt op.
- Als laatste, klik op Sleutel toevoegen.

Je Gitlab SSH-sleutel gebruiken
Je hebt tot nu toe de SSH-sleutel gegenereerd en geüpload naar je Gitlab-account. Het enige wat nog rest, is te testen of je SSH-sleutel werkt door deze te gebruiken om verbinding te maken en te authenticeren bij Gitlab.
Inloggen
Op de VS Code-terminal, maak verbinding met je Gitlab-account door de onderstaande opdracht uit te voeren.
Als je voor de eerste keer verbinding maakt, word je gevraagd om de authenticiteit van de host te verifiëren en de verbinding te bevestigen. Typ ja
bij de prompt en druk op Enter
om te bevestigen.
Merk op dat je geen gebruikersnaam en wachtwoord hoefde in te voeren om in te loggen? In plaats daarvan gebruikt de ssh-opdracht automatisch je SSH-sleutels voor authenticatie. Na een succesvolle login, zou je een welkomstbericht moeten zien met de tekst: “Welkom bij Gitlab @gebruikersnaam!“.

Een nieuw project publiceren
Je hebt bevestigd dat je Gitlab SSH-sleutel werkt en je succesvol kunt authenticeren. Maar werkt het ook wanneer je met Gitlab communiceert via Git? Waarom niet testen door een nieuw Gitlab-repository te publiceren?
1. Eerst initialiseer je de Git-configuratie en stel je deze in met je Gitlab-account gebruikersnaam en e-mailadres. Voer de git config
commando’s hieronder uit in de VS Code-terminal om respectievelijk je Gitlab-gebruikersnaam en e-mailadres op te geven.
Het commando dat je hebt uitgevoerd, zou het bestand ~/.gitconfig moeten bijwerken of maken met de door jou verstrekte informatie.

2. Maak vervolgens een map onder je thuismap voor je nieuwe repository. Noem de nieuwe map my-first-project.
De mapnaam wordt ook de naam van je Gitlab-repositoryproject.
3. Initialiseer de repository door het onderstaande commando uit te voeren. Zorg ervoor dat je <gebruikersnaam>
vervangt door je Gitlab-gebruikersnaam.
Je zou een vergelijkbare bevestigingsmelding moeten zien als op de onderstaande screenshot.

4. Specificeer vervolgens het externe Git-repositoryadres voor je project. Dit repositoryadres bepaalt of je met SSH-sleutels of met gebruikersnaam en wachtwoord authenticeert.
Vind de syntaxis hieronder, waar <gebruikersnaam>
je Gitlab-gebruikersnaam is en <projectnaam>
de naam van het Gitlab-repository is. Let op dat het repositoryadres begint met [email protected]
, wat aangeeft dat je je authenticeert met de SSH-sleutel in plaats van met een gebruikersnaam en wachtwoord.
Supposeer dat de Gitlab-gebruikersnaam kevin
is en de naam van het repository my-first-project
is. Voer nu het volgende commando uit in de terminal.
5. Voer het onderstaande commando uit om een leeg bestand in uw repository met de naam README.md te maken.
6. Open het bestand README.md om te bewerken en plak de volgende inhoud in het bestand. Sla het bestand op na het bewerken. Mijn eerste project om Gitlab SSH-sleutels te demonstreren.

7. Vertel Git nu om het nieuwe README.md bestand aan het repository toe te voegen en de wijzigingen te committen.
Je zou een vergelijkbare uitvoer moeten zien als hieronder getoond.

8. Tot slot, tijd om uw nieuwe repository te publiceren. Voer het onderstaande commando uit om het repository vanaf uw computer naar uw Gitlab-account te pushen.
Zoals u hieronder kunt zien, was de projectcreatie succesvol en waren er geen aanmeldingsprompts! Git gebruikte uw SSH-sleutels om met Gitlab te authenticeren.

9. Bevestig ten slotte dat uw nieuwe Gitlab-project online bestaat. Navigeer met uw browser naar https://gitlab.com/dashboard/projects om een lijst van uw bestaande projecten te bekijken. U zou dan de naam my-first-project op de lijst moeten zien staan.

10. Bovendien, klik op de projectnaam en u zou het README.md bestand en de inhoud op het scherm moeten zien.

Conclusie
Gefeliciteerd met het feit dat je tot hier bent gekomen in deze tutorial! Gedurende deze stapsgewijze tutorial heb je geleerd hoe je SSH-sleutels kunt genereren en gebruiken om veilige versiebeheerdeployments naar je GitLab-repository te maken.
Met deze kennis kun je nu taken uitvoeren op je Gitlab-repositories zonder je zorgen te maken over het per ongeluk blootstellen van je gebruikersnaam en wachtwoord.
Heb je eerder Gitlab SSH-sleutelauthenticatie gebruikt? Hoe was de ervaring? Beveel je anderen ook aan om SSH-sleutels te gebruiken, of is er een reden waarom ze er beter vanaf kunnen blijven? Laat het ons weten.