- Anforderungen
- Optionen für SSH-Schlüssel
- Überprüfen Sie vorhandene SSH-Schlüssel
- Generieren eines neuen SSH-Schlüsselpaars
- ED25519 SSH-Schlüssel
- RSA-SSH-Schlüssel
- Allgemeine Schritte zum Generieren eines SSH-Schlüsselpaars
- RSA-Schlüssel und OpenSSH von den Versionen 6.5 bis 7.,8
- Hinzufügen eines SSH-Schlüssels zu Ihrem GitLab-Konto
- Zwei-Faktor-Authentifizierung (2FA)
- Testen, ob alles korrekt eingerichtet ist
- Arbeiten mit nicht standardmäßigen SSH-Schlüsselpaarpfaden
- SSH-Schlüssel pro Repository
- Mehrere Konten auf einer einzelnen GitLab-Instanz
- Schlüssel bereitstellen
- Anwendungen
- Eclipse
li>
- SSH auf dem GitLab-Server
- Optionen für Microsoft Windows
- Fehlerbehebung
Git ist ein verteiltes Versionskontrollsystem, dh Sie können lokal arbeiten.,Darüber hinaus können Sie Ihre Änderungen auch für andere Server freigeben oder „pushen“.GitLab unterstützt die sichere Kommunikation zwischen Git und seinen Servern mithilfe von SSH-Schlüsseln.
Das SSH-Protokoll bietet diese Sicherheit und ermöglicht es Ihnen, sich auf dem GitLab Remote-Server zu authentifizieren, ohne jedes Mal Ihren Benutzernamen oder Ihr Passwort anzugeben.
Auf dieser Seite können Sie sichere SSH-Schlüssel konfigurieren, mit denen Sie Secureconnections zu GitLab-Repositorys unterstützen können.
- Wenn Sie Informationen zum Erstellen von SSH-Schlüsseln benötigen, beginnen Sie mit unseren Optionen für SSH-Schlüssel.,
- Wenn Sie SSH-Schlüssel für Ihr GitLab-Konto haben, können Sie daran interessiert sein, mit nicht standardmäßigen SSH-Schlüsselpaarpfaden zu arbeiten.
- Wenn Sie bereits ein SSH-Schlüsselpaar haben, können Sie Ihrem GitLab-Konto einen SSH-Schlüssel hinzufügen.
Anforderungen
Zur Unterstützung von SSH benötigt GitLab die Installation des OpenSSH-Clients, der unter GNU / Linux und macOS sowie unter Windows 10 vorinstalliert ist.
Stellen Sie sicher, dass Ihr System SSH Version 6.5 oder neuer enthält, da dies das jetzt unsichere MD5-Signaturschema ausschließt., Der folgende Befehl gibt die auf Ihrem System installierte SSH-Version zurück:
ssh -V
Während GitLab die Installation unter Microsoft Windows nicht unterstützt,können Sie SSH-Schlüssel einrichten, um Windows als Client einzurichten.
Optionen für SSH-Schlüssel
GitLab unterstützt die Verwendung von RSA -, DSA -, ECDSA-und ED25519-Schlüsseln.
- GitLab hat DSA-Schlüssel in GitLab 11.0 veraltet.
- Wie in der praktischen Kryptographie mit Go erwähnt, gelten die Sicherheitsprobleme im Zusammenhang mit DSA auch für ECDSA.,
Daher konzentriert sich unsere Dokumentation auf die Verwendung von ED25519-und RSA-Schlüsseln.
Administratoren können einschränken, welche Schlüssel erlaubt sein sollen und deren Mindestlängen.
Überprüfen Sie vorhandene SSH-Schlüssel
Wenn Sie über vorhandene SSH-Schlüssel verfügen, können Sie diese möglicherweise verwenden, um Verbindungen mit GitLabrepositories zu sichern., Standardmäßig werden SSH-Schlüssel auf Linux-und macOS-Systemen im Home-Verzeichnis des Benutzers im Unterverzeichnis .ssh/
gespeichert. Die folgende Tabelle enthält Standarddateinamen für jeden SSH-Schlüsselalgorithmus:
Empfehlungen finden Sie unter Optionen für SSH-Schlüssel.
Generieren eines neuen SSH-Schlüsselpaares
Wenn Sie Folgendes erstellen möchten:
- Ein ED25519-Schlüssel, lesen Sie ED25519 SSH-Schlüssel.
- Eine RSA schlüssel, lesen RSA SSH schlüssel.
ED25519 SSH-Schlüssel
Das Buch Praktische Kryptographie Mit Deutet darauf hin, dass ED25519-Schlüssel sicherer und leistungsfähiger sind als RSA-Schlüssel.,
Da OpenSSH 6.5 2014 ED25519 SSH-Schlüssel eingeführt hat, sollten sie auf jedem aktuellen Betriebssystem verfügbar sein.
Sie können einen ED25519-Schlüssel mit dem folgenden Befehl erstellen und konfigurieren:
ssh-keygen -t ed25519 -C "<comment>"
Das -C
– Flag mit einem zitierten Kommentar wie einer E-Mail-Adresse ist eine optionale Möglichkeit, Ihre SSH-Schlüssel zu kennzeichnen.
Sie sehen eine ähnliche Antwort wie:
Fahren Sie mit den allgemeinen Schritten fort.,
RSA – SSH-Schlüssel
Wenn Sie RSA-Schlüssel für SSH verwenden, empfiehlt das US National Institute of Standards and Technology, dass Sie eine Schlüsselgröße von mindestens 2048 verwenden bits.By standardmäßig erstellt der Befehl ssh-keygen
einen 1024-Bit-RSA-Schlüssel.,
Sie können einen RSA-Schlüssel mit dem folgenden Befehl erstellen und konfigurieren und bei Bedarf die empfohlene Mindestschlüsselgröße von 2048
ersetzen:
ssh-keygen -t rsa -b 2048 -C "[email protected]"
Das -C
– Flag mit einem zitierten Kommentar wie einer E-Mail-Adresse ist eine optionale Möglichkeit, Ihren SSH-Schlüssel zu kennzeichnen schlüssel.
Sie sehen eine ähnliche Antwort wie:
Generating public/private rsa key pair.Enter file in which to save the key (/home/user/.ssh/id_rsa):
Fahren Sie mit den allgemeinen Schritten fort.
Allgemeine Schritte zum Generieren eines SSH-Schlüsselpaares
Unabhängig davon, ob Sie einen ED25519-oder einen RSA-Schlüssel erstellen, haben Sie mit der ssh-keygen
command.At an diesem Punkt sehen Sie die folgende Meldung in der Befehlszeile (für ED25519-Schlüssel):
Wenn Sie noch kein SSH-Schlüsselpaar haben und keinen Bereitstellungsschlüssel generieren,akzeptieren Sie die vorgeschlagene Datei und das vorgeschlagene Verzeichnis. Ihr SSH-Client verwendetdas resultierende SSH-Schlüsselpaar ohne zusätzliche Konfiguration.,
Alternativ können Sie das neue SSH-Schlüsselpaar an einem anderen Speicherort speichern.Sie können das Verzeichnis und den Dateinamen Ihrer Wahl zuweisen.Sie können dieses SSH-Schlüsselpaar auch einem bestimmten Host zuweisen.
Nachdem Sie eine Datei zum Speichern Ihres SSH-Schlüssels zugewiesen haben, können Sie eine Passphrase für Ihren SSH-Schlüssel einrichten:
Enter passphrase (empty for no passphrase):Enter same passphrase again:
Bei Erfolg sehen Sie eine Bestätigung, wo die ssh-keygen
– Befehle Ihre Identifikation und Ihren privaten Schlüssel gespeichert haben.,
Bei Bedarf können Sie die Passphrase mit folgendem Befehl aktualisieren:
ssh-keygen -p -f /path/to/ssh_key
RSA-Schlüssel und OpenSSH von den Versionen 6.5 bis 7.8
Vor OpenSSH 7.8 basierte der standardmäßige öffentliche Schlüsselabdruck für RSA-Schlüssel auf MD5 und ist daher unsicher.
Wenn Ihre OpenSSH-Version zwischen Version 6.5 und Version 7.8 (inklusive) liegt, führen Sie ssh-keygen
mit der Option -o
aus, um Ihre privaten SSH-Schlüssel im sichereren OpenSSH-Format zu speichern.,
Wenn Sie bereits ein RSA-SSH-Schlüsselpaar für GitLab haben, sollten Sie es aktualisieren, um das sicherere Kennwortverschlüsselungsformat zu verwenden. Sie können dies mit dem folgenden Befehl tun:
ssh-keygen -o -f ~/.ssh/id_rsa
Alternativ können Sie einen neuen RSA-Schlüssel mit dem sichereren Verschlüsselungsformat mit dem folgenden Befehl generieren:
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
ssh-keygen
/div> manpage, ED25519 verschlüsselt bereits Schlüssel in das secureOpenSSH-Format.,Hinzufügen eines SSH-Schlüssels zu Ihrem GitLab-Konto
Jetzt können Sie den von Ihnen erstellten SSH-Schlüssel in Ihr GitLab-Konto kopieren. Führen Sie dazu folgende Schritte aus:
-
Kopieren Sie Ihren öffentlichen SSH-Schlüssel an einen Speicherort, an dem Informationen im Textformat gespeichert werden.,Die folgenden Optionen speichert die Informationen für ED25519-Schlüssel der clipboardfor der bekannte Betriebssystem:
– macOS:
pbcopy < ~/.ssh/id_ed25519.pub
Linux (erfordert das
xclip
Paket):xclip -sel clip < ~/.ssh/id_ed25519.pub
Git Bash unter Windows:
cat ~/.ssh/id_ed25519.pub | clip
Wenn Sie einen RSA-Schlüssel, Ersatz entsprechend.
- Navigieren Sie zu
oder Ihrer lokalen GitLab-Instanz-URL und melden Sie sich an.,
- Wählen Sie Ihren Avatar oben rechts aus und klicken Sie auf Einstellungen
- Klicken Sie auf SSH Keys.
- Fügen Sie den öffentlichen Schlüssel, den Sie kopiert haben, in das Textfeld Schlüssel ein.
- Stellen Sie sicher, dass Ihr Schlüssel einen beschreibenden Namen im Textfeld Titel enthält,z. B. Arbeitslaptop oder Arbeitsstation.
- Fügen Sie ein (optionales) Ablaufdatum für den Schlüssel im Abschnitt „Expires at“ ein. (Einführung in GitLab 12.9.)
- Klicken Sie auf die Schaltfläche Schlüssel hinzufügen.
SSH-Schlüssel, die mit dieser Prozedur“ abgelaufen “ sind, sind in GitLab-Workflows gültig.,Da das GitLab-konfigurierte Ablaufdatum nicht im SSH-Schlüssel selbst enthalten ist, können Sie nach Bedarf weiterhin öffentliche SSH-Schlüssel exportieren.
ssh-ed25519
(oder ssh-rsa
) und endend mit Ihrer E-Mail-Adresse.Zwei-Faktor-Authentifizierung (2FA)
Sie können die Zwei-Faktor-Authentifizierung (2FA) forGit über SSH einrichten.,
Testen, ob alles korrekt eingerichtet ist
Um zu testen, ob Ihr SSH-Schlüssel korrekt hinzugefügt wurde, führen Sie den folgenden Befehl in Ihrem Terminal aus (ersetzen Sie gitlab.com
durch die Domäne Ihrer GitLab-Instanz):
ssh -T [email protected]
Wenn Sie zum ersten Mal eine Verbindung über SSH zu GitLab herstellen, sollten Sie Folgendes überprüfen theauthenticity des GitLab-Hosts, mit dem Sie eine Verbindung herstellen.Zum Beispiel beim Verbinden mit GitLab.com, antwort yes
um GitLab hinzuzufügen.,com zudie Liste der vertrauenswürdigen Hosts:
The authenticity of host 'gitlab.com (35.231.145.151)' can't be established.ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'gitlab.com' (ECDSA) to the list of known hosts.
Sobald Sie der Liste der bekannten Hosts hinzugefügt wurden, sollten Sie Dieauthentizität des GitLab-Hosts noch einmal überprüfen. Führen Sie den obigen Befehl ausagain, und Sie sollten eine Begrüßung in GitLab erhalten, @username
! Nachricht.,
Wenn die Begrüßungsnachricht nicht angezeigt wird, können Sie das Problem beheben,indem Sie ssh
im ausführlichen Modus mit dem folgenden Befehl ausführen:
ssh -Tvvv [email protected]
Arbeiten mit nicht standardmäßigen SSH-Schlüsselpaarpfaden
Wenn Sie einen nicht standardmäßigen Dateipfad für Ihr GitLab SSH-Schlüsselpaar verwendet haben, konfigurieren Sie Ihren SSH-Client um auf Ihren privaten SSH-Schlüssel von GitLab zu verweisen.
Um diese Änderungen vorzunehmen, führen Sie die folgenden Befehle aus:
eval $(ssh-agent -s)ssh-add <path to private SSH key>
Speichern Sie diese Einstellungen nun in der Datei ~/.ssh/config
., Zwei Beispiele für SSH-Schlüssel für GitLab werden hier gezeigt:
# GitLab.comHost gitlab.com Preferredauthentications publickey IdentityFile ~/.ssh/gitlab_com_rsa# Private GitLab instanceHost gitlab.company.com Preferredauthentications publickey IdentityFile ~/.ssh/example_com_rsa
Öffentliche SSH-Schlüssel müssen für GitLab eindeutig sein, da sie an Ihr Konto gebunden sind.Ihr SSH-Schlüssel ist die einzige Kennung, die Sie haben, wenn Sie Code über SSH pushen, deshalb muss er einem einzelnen Benutzer eindeutig zugeordnet werden.,
SSH-Schlüssel pro Repository
Wenn Sie je nach Repository, in dem Sie arbeiten, unterschiedliche Schlüssel verwenden möchten, können Sie den folgenden Befehl in Ihrem Repository ausgeben:
git config core.sshCommand "ssh -o IdentitiesOnly=yes -i ~/.ssh/private-key-filename-for-this-repository -F /dev/null"
Dies verwendet nicht den SSH-Agenten und erfordert mindestens Git 2.10.
Mehrere Konten auf einer einzelnen GitLab-Instanz
Die Methode pro Repository funktioniert auch für die Verwendungmultiple-Konten innerhalb einer einzelnen GitLab-Instanz.
Alternativ ist es möglich, Hosts in~.ssh/config
Aliase direkt zuzuweisen., SSH und Git können sich nicht anmelden, wenn ein IdentityFile
außerhalb eines Host
– Blocks in .ssh/config
. Diese isdue wie SSH montiert IdentityFile
Einträge und wird nicht geändert bysetting IdentitiesOnly
zu yes
. IdentityFile
Einträge sollten auf den privaten Schlüssel eines SSH-Schlüsselpaares verweisen.
Host
Aliase sind definiert als user_1.gitlab.com
unduser_2.gitlab.com
für effizienz und transparenz., Erweiterte Konfigurationensind schwieriger zu pflegen; Die Verwendung dieser Art von Alias erleichtert den Umgang mit anderen Tools wie git remote
-Unterbefehlen. SSHwould verstehen string wie Host
alias so Tanuki1
und Tanuki2
,trotz der sehr wenig Kontext, wie und wo Sie Sie verweisen, auch funktionieren würde.,Das Klonen des gitlab
Repositorys sieht normalerweise so aus:
git clone [email protected]:gitlab-org/gitlab.git
Um es für user_1
zu klonen, ersetzen Sie gitlab.com
durch den SSH-Alias user_1.gitlab.com
:
git clone git@<user_1.gitlab.com>:gitlab-org/gitlab.git
Fix a previously cloned repository using the git remote
command.
Im folgenden Beispiel wird davon ausgegangen, dass das Remote-Repository mit einem Alias versehen ist origin
.,
git remote set-url origin git@<user_1.gitlab.com>:gitlab-org/gitlab.git
Deploy keys
die Dokumentation zu Lesen, die auf die Bereitstellung von Schlüsseln.
Anwendungen
Eclipse
Wenn Sie EGit verwenden, können Sie Eclipse Ihren SSH-Schlüssel hinzufügen.
SSH auf dem GitLab-Server
GitLab integriert sich in den vom System installierten SSH-Daemon und bezeichnet einen Benutzer(normalerweise git
), über den alle Zugriffsanforderungen verarbeitet werden. Benutzer, die über SSH eine Verbindung zum GitLab-Server herstellen, werden durch ihren SSH-Schlüssel anstelle ihres Benutzernamens identifiziert.,
SSH-Clientoperationen, die auf dem GitLab-Server ausgeführt werden, werden als thisuser ausgeführt. Obwohl es möglich ist, die SSH-Konfiguration für diesen Benutzer zu ändern, um z. B. einen privaten SSH-Schlüssel zur Authentifizierung dieser Anforderungen bereitzustellen, wird diese Vorgehensweise nicht unterstützt und wird dringend davon abgeraten, da sie erhebliche Sicherheitsrisiken birgt.
Der GitLab-Prüfprozess enthält eine Überprüfung dieser Bedingung und leitet Sie zu diesem Abschnitt weiter, wenn Ihr Server wie folgt konfiguriert ist, z. B.:
Entfernen Sie die benutzerdefinierte Konfiguration, sobald Sie dies können., Diese Anpassungen werden explizit nicht unterstützt und funktionieren möglicherweise jederzeit nicht mehr.
Optionen für Microsoft Windows
Wenn Sie Windows 10 ausführen, unterstützen das Windows-Subsystem für Linux (WSL) und die neueste WSL 2-Version die Installation verschiedener Linux-Distributionen, einschließlich der Git-und SSH-Clients.
Für aktuelle Windows-Versionen können Sie die Git-und SSH-Clients auch mit
Alternative Tools umfassen:
- Cygwin
- PuTTYgen
Fehlerbehebung
Wenn Sie bei Git clone nach einem Kennwort wie [email protected]'s password:
gefragt werden, stimmt etwas mit Ihrem SSH-Setup nicht.,
- Stellen Sie sicher, dass Sie Ihr SSH-Schlüsselpaar korrekt generiert und den öffentlichen SSHkey zu Ihrem GitLab-Profil hinzugefügt haben
- Versuchen Sie, Ihren privaten SSH-Schlüssel manuell mit
ssh-agent
als documentedearlier in diesem Dokument zu registrieren - Versuchen Sie, die Verbindung zu debuggen, indem Sie
ssh -Tv [email protected]
(Ersetzenexample.com
GitLab domain)