ssh_beitragsbild

SSH Schlüssel & GitLab

Von am 19.09.2021

Definition, Verwendung von mehreren SSH Schlüsseln mit GIT

Definition SSH Schlüssel

Bei SSH Schlüsseln (Secure Shell) handelt es sich um eine Zugangsberechtigung, die im SSH Protokoll verwendet werden. Die Schlüssel gibt es in vielen Größen, die beliebteste Wahl ist eine RSA 2048 Bit Verschlüsselung, welche mit einem 617 Stellen langen Passwort vergleichbar ist. SSH Schlüssel liegen also immer paarweise vor und jedes Paar besteht aus einem privaten und einem öffentlichen Schlüssel. [1]

Der private Schlüssel bleibt auf dem System, das für den Zugriff auf ein entferntes System verwendet wird, also auf dem Desktop oder Laptop des Benutzter. In Zusammenhang mit einem GIT Repository, also dem Ort, an dem ein Projekt geklont wird. Der private Schlüssel wird dann zum Entschlüsseln von Informationen verwendet, welche im SSH Protokoll ausgetauscht werden. Private Schlüssel sollten nie mit jemandem geteilt werden und sicher auf dem System gespeichert werden. Bei der Erstellung eines SSH Schlüssels kann auch ein Passwort vergeben werden, um dem Schlüssel zu sichern. [1]

Ein öffentlicher Schlüssel wird, im Gegensatz zum Privaten, zur Verschlüsselung von Informationen verwendet, kann weitergegen werden. Dieser Schlüssel wird im Zusammenhang mit GIT im Repository hinterlegt. [1]

Einen SSH Schlüssel generieren

Mit dem Befehl ssh-keygen kann ein neuer SSH Key generiert werden. Dieser Befehl kann direkt über die Kommandozeile ausgeführt werden.

$ ssh-keygen -t rsa -C "username"
Abbildung 1 – “ssh-keygen” Eingabe und Pfad Angabe

Nach dieser Eingabe wird der Speicherort festgelegt. Standardmäßig wird vorgeschlagen den Schlüssel in das ./ssh Verzeichnis abzuspeichern in die Datei id_rsa. Wenn der Vorgegebene Pfad verwendet werden soll kann man dies einfach mit der Eingabetaste bestätigen. Wenn ein anderer Pfad verwendet werden soll kann hier ein anderer Pfad definiert werden, beispielsweise:

/C/Users/Betti/.ssh/username
Abbildung 2 – Passwort Eingabe

Danach kann man ein Passwort angeben, um die Verwendung zu sichern. Mit Enter kann man dies auch überspringen und das Passwort leer lassen. Danach wird die Wiederholung des Passwortes gefordert.

Abbildung 3 – Schlüssel Generierung im Terminal

Nach der Wiederholung des Passwortes wird der SSH Schlüssel generiert und abgespeichert. Wenn man hier das ./ssh Verzeichnis öffnet kann man die genierten Dateien sehen.

Abbildung 4 – Screenshot: Ausschnitt SSH Verzeichnis in Visual Studio Code

In Abbildung 4 sieht man die beiden Dateien. Die erste Datei username beinhaltet den privaten Schlüssel die Datei username.pub den Öffentlichen. Erkennbar ist hier es wird der eingegebene String als Dateiname übernommen.

Abbildung 5 – Screenshot: Ausschnitt SSH Verzeichnis in Visual Studio Code Standardgenerierung

In Abbildung 5 sieht man das Ergebnis von einer SSH Generierung, wenn die Pfad Eingabe den Standard beinhaltet. Standardmäßig werden hier also Dateien generiert mit dem Namen id_rsa.

Kopieren eines „Public Keys“

Um den öffentlichen Schlüssel zu verwenden muss dieser kopiert werden. Hierfür gibt es mehrere Möglichkeiten. Zum einen kann das ./ssh Verzeichnis mit einem Text Editor geöffnet werden und die .pub Datei des gewünschten Schlüssels geöffnet werden. Hier kann der String direkt kopiert werden.

Ein anderer Weg ist das Kopieren des Schlüssels über die Kommandozeile:

$ clip < ~/.ssh/username.pub

Durch den clip Befehl wird der öffentliche Schlüssel aus der username.pub Datei direkt in den Zwischenspeicher geladen. (Funktioniert nicht auf MAC)

$ cat ~/.ssh/username.pub

Mit cat wird der Schlüssel im Terminal angezeigt und kann von dort kopiert werden. (Funktioniert auf MAC)

Abbildung 6 – Ausgabe der Kopierbefehle im Terminal

GIT Repository und SSH

SSH ist eine von mehreren Möglichkeiten ein GIT Repository zu klonen. Hierzu hat man in einem Repository einen Link der direkt genutzt werden kann.

Abbildung 7 – Übertragungslinks GIT Repository

Für das Klonen einen Projekts muss zuerst der öffentliche SSH Key im GIT Konto hinterlegt werden, damit die Verbindung funktioniert.

Abbildung 8 – Hinzufügen eines Public SSH Keys im GIT Konto

Beim Hinzufügen ist es möglich mehrere Schlüssel zu hinterlegen und diese auch mit einem identifizierbaren Titel sowie einem Ablaufdatum zu versehen. Sobald die Schlüssel am lokalen System und im GIT Konto hinzugefügt wurden kann ohne weitere Anmeldung Daten übertragen werden.

Mehrere SSH Schlüssel auf einem System

Soweit so gut, jetzt kommt aber dazu, dass ein einzelner Benutzer mehrere Arbeitsplätze hat. Einen Laptop, einen PC, einen Rechner zuhause, einen in der Firma. Im GIT Konto ist das leicht gelöst, es können mehrere SSH Schlüssel hinterlegt werden. Auf jedem Rechner, der auf das Projekt zugreifen möchte, muss also ein eigener Schlüssel generiert werden und im GIT Konto hinterlegt werden.

Aber nun hat ein Nutzer nicht nur mehrere Arbeitsplätze, sondern auch mehrere GIT Konten. Nehmen wir eines für private Projekte, eines von der Universität oder Fachhochschule und eines vom Arbeitsplatz. Besonders in der momentanen Zeit ist Heimarbeit ein großes Thema und hier kommen mehrere Konten zusammen.

Eine Lösung wird in Stack Overflow [2] beschrieben und zwar die Nutzung einer Konfigurationsdatei für SSH Schlüssel. In dieser Datei werden die verschiedenen Hosts und der Pfad zur jeweiligen Schlüsseldatei hinterlegt.

Weiter oben wurden zwei Schlüsselpaare generiert und im ./ssh Verzeichnis gespeichert. In diesem Ordner erstellt man zusätzlich eine config Datei:

Abbildung 9 – GIT Konfigurationsdatei

In Abbildung 9 sieht man die Konfiguration. Hier wird der Host angegeben sowie, dass die Authentifizierung mittels öffentlichen Schlüssel stattfinden sollte. Im IdentityFile wird dann der Pfad zum privaten Schlüssel angegeben. Beispielsweise wurde der id_rsa Schlüssel für das private GIT Konto generiert und wird zur Datenübertragung verwendet sowie der username Schlüssel für den Zugriff auf xy.gitlab.com verwendet werden soll.

Im lokalen GIT Projekt kann dann, wie folgt, noch die Konfiguration für den Benutzer hinterlegt werden:

$ git config user.name “username”
$ git config user.email “username@email.com”

Quellenverzeichnis

1.         Blanton S. What are SSH Keys? [Internet]. JumpCloud. 2021 [cited 2021 May 9]. Available from: https://jumpcloud.com/blog/what-are-ssh-keys

2.         Best way to use multiple SSH private keys on one client [Internet]. Stack Overflow. [cited 2021 Sep 19]. Available from: https://stackoverflow.com/questions/2419566/best-way-to-use-multiple-ssh-private-keys-on-one-client

Abbildungsverzeichnis

  1. “ssh-keygen” Eingabe und Pfad Angabe.
  2. Passwort Eingabe
  3. Schlüssel Generierung im Terminal
  4. Screenshot: Ausschnitt SSH Verzeichnis in Visual Studio Code.
  5. Screenshot: Ausschnitt SSH Verzeichnis in Visual Studio Code Standardgenerierung
  6. Ausgabe der Kopierbefehle im Terminal
  7. Übertragungslinks GIT Repository
  8. Hinzufügen eines Public SSH Keys im GIT Konto
  9. GIT Konfigurationsdatei

The comments are closed.