Die Public Key Infrastructure (PKI) bildet die technologische Grundlage für sichere Kommunikation und Authentifizierung in modernen IT-Systemen, einschließlich GitLab. Im Kern dieser Infrastruktur steht die asymmetrische Verschlüsselung, ein mathematisches Verfahren, das auf Schlüsselpaaren basiert.
Im Gegensatz zur symmetrischen Verschlüsselung, bei der ein gemeinsamer Schlüssel verwendet wird, nutzt die asymmetrische Verschlüsselung zwei mathematisch miteinander verbundene Schlüssel:
Diese Schlüsselpaare ermöglichen folgende kryptografische Operationen:
Verschlüsselung: Eine mit dem öffentlichen Schlüssel verschlüsselte Nachricht kann nur mit dem entsprechenden privaten Schlüssel entschlüsselt werden. Dies gewährleistet Vertraulichkeit, da nur der Inhaber des privaten Schlüssels die Nachricht lesen kann.
Digitale Signatur: Eine mit dem privaten Schlüssel “signierte” Nachricht kann von jedem mit dem öffentlichen Schlüssel verifiziert werden. Dies bestätigt die Authentizität und Integrität der Nachricht, da nur der Inhaber des privaten Schlüssels die Signatur erstellen konnte.
Das asymmetrische Verschlüsselungsverfahren löst das Problem des sicheren Schlüsselaustauschs, das bei symmetrischen Verfahren besteht, und bildet damit die Basis für sichere Kommunikation über unsichere Netzwerke wie das Internet.
GitLab setzt auf SSH (Secure Shell) mit Public-Key-Authentifizierung als primäre Methode für den sicheren Zugriff auf Git-Repositories. Dieser Ansatz bietet mehrere Vorteile:
Die Einrichtung des SSH-Zugangs für GitLab umfasst die folgenden Schritte:
Generierung eines SSH-Schlüsselpaars: Mit folgendem Befehl wird ein neues Schlüsselpaar erstellt:
ssh-keygen -t ed25519 -C "email@example.com"Oder für ältere Systeme:
ssh-keygen -t rsa -b 4096 -C "email@example.com"Bei der Ausführung dieses Befehls werden Sie aufgefordert:
~/.ssh/id_ed25519 oder ~/.ssh/id_rsa)Hinzufügen des öffentlichen Schlüssels zu GitLab:
id_ed25519.pub) in das entsprechende Feld einÜberprüfung der SSH-Verbindung:
ssh -T git@gitlab.example.comBei erfolgreicher Konfiguration erhalten Sie eine Begrüßungsnachricht, die bestätigt, dass die Authentifizierung funktioniert.
Der SSH-Agent ist ein Hilfsprogramm, das private Schlüssel im Speicher hält und die Authentifizierung für SSH-Verbindungen übernimmt. Dies bietet mehrere Vorteile für den Entwicklungsworkflow:
Aktivierung und Nutzung des SSH-Agents:
# Starten des SSH-Agents
eval "$(ssh-agent -s)"
# Hinzufügen des Schlüssels zum Agent
ssh-add ~/.ssh/id_ed25519Für permanente Konfiguration kann die SSH-Konfigurationsdatei
(~/.ssh/config) angepasst werden:
Host gitlab.example.com
IdentityFile ~/.ssh/id_ed25519
AddKeysToAgent yes
UseKeychain yes # Nur für macOS
GitLab bietet umfangreiche Funktionen zur Verwaltung von SSH-Schlüsseln:
In den GitLab-Administrationseinstellungen können globale Richtlinien für SSH-Schlüssel definiert werden, wie minimale Schlüssellängen oder erlaubte Algorithmen.
Das PEM-Format (Privacy Enhanced Mail) ist ein Standard für die Speicherung und Übertragung kryptografischer Daten und wird in GitLab für SSH-Schlüssel verwendet. Ein PEM-formatierter Schlüssel hat folgende Merkmale:
Base64-Kodierung: Binäre Daten werden in ASCII-Text umgewandelt, was die Handhabung in textbasierten Systemen erleichtert.
Header und Footer: Der Base64-kodierte Inhalt wird von identifizierenden Zeilen umschlossen, z.B.:
-----BEGIN RSA PRIVATE KEY-----
[Base64-kodierte Daten]
-----END RSA PRIVATE KEY-----Zeilenumbrüche: Der Base64-kodierte Inhalt wird typischerweise alle 64 Zeichen umgebrochen, um Kompatibilität mit älteren Systemen zu gewährleisten.
Base64 ist ein Kodierungsverfahren, das für die Übertragung binärer Daten in textbasierte Kanäle entwickelt wurde. In der PKI und bei der Verwendung von SSH-Schlüsseln in GitLab spielt Base64 eine zentrale Rolle:
Der öffentliche SSH-Schlüssel, der in GitLab hochgeladen wird, liegt
in Base64-kodierter Form vor und beginnt typischerweise mit dem
Algorithmus-Identifier (z.B. ssh-rsa oder
ssh-ed25519), gefolgt vom kodierten Schlüssel und optional
einem Kommentar:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJOMx+8zkuyMsGqceXr8j8kAMgLsH8U7yz3kVRydD5sQ email@example.com
Der Schutz privater SSH-Schlüssel ist für die Sicherheit Ihres GitLab-Zugangs und Ihrer Repositories von entscheidender Bedeutung:
In automatisierten CI/CD-Pipelines erfordert die Verwendung von SSH-Schlüsseln besondere Überlegungen:
Bei Problemen mit der SSH-Authentifizierung in GitLab können folgende Schritte helfen:
Überprüfung der Verbindung im Debug-Modus:
ssh -vT git@gitlab.example.comDie ausführliche Ausgabe ermöglicht eine detaillierte Diagnose.
Häufige Problemursachen:
GitLab-spezifische Diagnose: In den GitLab-Einstellungen unter “SSH Keys” wird angezeigt, wann ein Schlüssel zuletzt verwendet wurde, was bei der Diagnose helfen kann.