• 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.,
Nicht erreichbare Dokumentation legt nahe, dass ED25519 sicherer ist. Wenn Sie einen RSA-Schlüssel verwenden, empfiehlt das US National Institute of Science and Technology in der Publikation 800-57 Part 3 (PDF) eine Schlüsselgröße von mindestens 2048 Bit.

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 2048ersetzen:

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.

anmerkungwenn Sie haben die OpenSSH-version 7.,8 oder unten, betrachten Sie die Probleme verbundenmit der Codierung.

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]"
Hinweis in derssh-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:

  1. 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.

  2. Navigieren Sie zu oder Ihrer lokalen GitLab-Instanz-URL und melden Sie sich an.,
  3. Wählen Sie Ihren Avatar oben rechts aus und klicken Sie auf Einstellungen
  4. Klicken Sie auf SSH Keys.
  5. Fügen Sie den öffentlichen Schlüssel, den Sie kopiert haben, in das Textfeld Schlüssel ein.
  6. Stellen Sie sicher, dass Ihr Schlüssel einen beschreibenden Namen im Textfeld Titel enthält,z. B. Arbeitslaptop oder Arbeitsstation.
  7. Fügen Sie ein (optionales) Ablaufdatum für den Schlüssel im Abschnitt „Expires at“ ein. (Einführung in GitLab 12.9.)
  8. 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.

Hinweis Wenn Sie Ihren öffentlichen SSH-Schlüssel manuell kopiert haben, stellen Sie sicher, dass Sie den gesamten Schlüssel kopiert haben, beginnend mit 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):

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.
noteFor GitLab.com wenden Sie sich bitte an den Abschnitt SSH Host keys Fingerprints,um sicherzustellen, dass Sie eine Verbindung zum richtigen Server herstellen. Sie können beispielsweise den oben im verknüpften Abschnitt gezeigten Fingerabdruck des ECDSA-Schlüssels sehen.

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 sshim 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/configAliase 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.

noteDas Beispiel 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 für Windows installieren.,

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](Ersetzen example.com GitLab domain)