GIT Repository von GitLab, mittels HTTPS und SSH, klonen
Inhalt
Übersicht
Es gibt 2 Arten, um ein Repository zu klonen.
- per HTTPS. Das ist für externe Mitarbeiter, die sich nicht im ABUS Netzwerk befinden. Bei dieser Methode muss ein Access Token erstellt werden.
- per SSH. Das ist für den internen Zugriff. Bei dieser Methode wird ein Key erzeugt.
Zugriff erstellen
HTTPS Zugriff mittels Access Token
Access Token bekommen
-
Zuerst muss in GitLab ein Access Token erzeugt werden. Dazu wird wie folgt vorgegangen:
-
Navigation zu Access Token:
-
write_repository auswählen:
-
Token kopieren und wegspeichern. Dieser wird als Anmeldepasswort später benötigt und kann nachträglich nicht mehr eingesehen werden. Der Token darf nicht an andere Personen gelangen. Das Ablauf-Datum ist optional. Das lassen wir vorerst leer, damit das Token nicht irgendwann aus Versehen abläuft.
Git Repository URL bekommen
-
Um das Repository zu klonen, muss nun erst der Pfad zu dem Repository geholt werden. Dies geht folgendermaßen:
Hier ist es der Punkt 4.
Git Repository klonen mit GitExtensions
Das Repository jetzt mittels der Bash oder der jeweiligen UI klonen. Hier verwenden wir Git Extensions:
-
Klonen auswählen:
-
Repository Pfad und lokalen Pfad eintragen:
Anschließend auf Klonen klicken.
-
Dann erfolgt vielleicht folgendes Fenster, das mit "Unblock and Continue" bestätigt werden soll.
-
Jetzt wird nach den Anmeldedaten gefragt. Hier ist der Username = E-Mail und das Passwort = Access Token
Wenn alles erfolgreich war, müsste es so aussehen:
Anmeldeinformationen innerhalb Git speichern
Damit die Anmeldedaten nicht immer eingegeben werden müssen, muss folgende Einstellung in der Git Konfiguration getätigt werden:
-
Git Bash starten: Bash starten mit Git Extensions
git config --global --edit
-
Folgendes am Ende der Datei eingeben:
-
Text zum Kopieren: [credential] helper = store
-
Um das zu testen, kann jetzt einmal ein "fetch all" gemacht werden. Hierbei müssen noch einmal die Anmeldedaten eingegeben werden:
Jetzt sind die Anmeldedaten immer auf der lokalen Maschine unter diesem Benutzer gespeichert. Dies werden in der Datei:
$path_to_global_settings$/.git-credentials
abgelegt. Wobei
path_to_global_settings
der Pfad zur globalen Git Konfiguration ist.Falls der Access Token sich ändert wird eine neue Anfrage gestellt. Vorraussetzung dafür ist, dass es einen Token bei der Hostingseite gibt.
Anmeldeinformationen unter Windows speichern
Wenn die Anmeldeinformationen noch nicht hinterlegt sind), werden diese beim ersten Zugriff abgefragt und dann gespeichert. Dies passiert automatisch, wenn ein Repository geklont wird.
-
Nach einem Klick auf die Schaltfläche Klonen dauert es mehrere (lange) Sekunden bis ein Fenster erscheint (Achtung, bei mehreren Bildschirmen kann das Fenster außerhalb des Sichtfeldes erscheinen), das die Anmeldeinformationen erfragt:
Benutzername: Abus-E-Mail-Adresse
Kennwort: das eben erzeugte Token.
Diese Informationen werden im Git Credential Manager (GCM) gespeichert und brauchen später nicht mehr neu eingegeben zu werden.
-
Wie oben beschrieben, werden die Anmeldeinformationen im GCM automatisch gespeichert. Über die Windows Anmeldeinformationsverwaltung können sie direkt verwaltet werden:
-
Dann Windows-Anmeldeinformationen wählen:
Im unteren Teil des Fensters baut sich eine Liste mit allen Anmeldeinformationen auf. Hier können die gewünschten Informationen ergänzt oder entfernt werden.
Typ Wert Internet- oder Netzwerkadresse https://gitlab.abus-kransysteme.de Benutzername <E-Mail-Adresse> Kennwort Access Token Bei der ersten Anmeldung wird dann automatisch ein zweiter Eintrag ergänzt:
Typ Wert Internet- oder Netzwerkadresse https://<E-Mail-Adresse>@gitlab.abus-kransysteme.de Benutzername <E-Mail-Adresse> Kennwort Access Token -
Dieser Zugriff kann auch **gelöscht ** werden. Entsprechenden Eintrag aus oben erwähnter Liste auswählen und entfernen anklicken. Nun wird beim nächsten Zugriff auf das Repository wieder danach gefragt. Wird das Token in GitLab zurückgenommen, schlägt die nächste Git-Operation in Visual Studio fehl und das Token wird automatisch aus der Liste entfernt. Man braucht also keine Sorge tragen, verwaiste Tokens manuell zu entfernen.
SSH Zugriff mittels Key
-
Der Schlüssel muss zuerst auf dem PC erzeugt werden. Dieser wird dann auf allen Hostingseiten (hier GitLab) eingetragen. Das Erzeugen des Schlüssels geht folgendermaßen:
-
Starten der Bash: Bash starten mit Git Extensions
-
Key generieren:
Achtung das Laufwerk "L:" ist nur im ABUS Netzwerk verfügbar. Bitte den Pfad auf einen lokalen Ort zeigen lassen wenn auch von zu Hause aus gearbeitet werden muss.
ssh-keygen -o
Es gibt hier noch mehr parameter. Diese bitte hier entnehmen.
-
SSH Key der Lokalen Maschine hinzufügen:
eval $(ssh-agent)
ssh-add /l//.ssh/id_rsa
-
Den Schlüssel anzeigen und in die Zwischenablage kopieren, um diesen anschließen in GitLab einzugeben.
cat /l//.ssh/id_rsa.pub | clip
-
Anschließend auf der Hostingseite (GitLab) zu den SSH Keys, wie folgt, navigieren und den Schlüssel dort eingeben:
-
Um das Repository zu klonen, muss nun erst der Pfad zu dem Repository geholt werden. Dies geht folgendermaßen:
Hier ist es der Punkt 3.
-
Server bekannt machen mittels der Git Bash: Damit die Entwicklungsumgebung oder das Git Tool ( Visual Studio, GitExtension ) über SSH kommunizieren kann, muss der ABUS-GitLab-Host dauerhaft der List bekannter Hosts hinzugefügt werden. Diese befindet sich in der Datei known_hosts, im Ordner .ssh. Gleichzeitig dient der folgende Schritt zu Prüfung, ob die Einrichtung von SSH geklappt hat. Dazu in Git Bash folgendes eingeben:
ssh -T git@gitlab.abus-kransysteme.de -p 2289
Der Parameter p legt den Port fest. Ohne diese Angabe versucht ssh die Verbindung über Port 22 herzustellen. Die Schlüssel sind über unser Profil aber für den Zugriff über Port 2289 zugewiesen.
Darauf erscheint die Abfrage, ob man sich wirklich mit diesem Server verbinden möchte:
Diese Frage mit yes beantworten. Nun wurde gitlab.abus-kransysteme.de in der Datei known_hosts ergänzt. Zudem erscheint eine Willkommens-Nachricht:
Wenn der Befehl nun wiederholt wird, erscheint nur diese Nachricht. Die Git Tools können nun per SSH auf gitlab.abus-kransysteme.de zugreifen.
-
Anschließend bitte standardmäßig das Repository mit der jeweiligen UI oder der GIT Bash klonen. Dies kann fehlschlagen und folgende Fehlermeldung kann aufkommen:
Hier fehlt ein Schlüssel, der in GitLab eingetragen werden muss – oder der Server ist noch nicht in der Liste der bekannten Hosts eingetragen (s.u.). Zweiteres müsste von der IT aber gelöst sein. Falls dies nicht der fall ist, bitte in der Hostdatei einen DNS Eintrag tätigen lassen (lokale Administrationsrechte sind erforderlich).
Datei unter Windows: C:\Windows\System32\drivers\etc\hosts Zeile hinzufügen:
10.240.29.35 gitlab.abus-kransysteme.de # Zugriff über VPN-Tunnel
Achtung: Wenn der VPN-Tunnel nicht (richtig) eingerichtet ist, blockiert diese Zeile den Zugriff über HTTPS.
Detailinformationen hierzu gibt es hier: https://gitlab.abus-kransysteme.de/help/ssh/index
Weitere Infos zu SSH und GitLab
Schlüssel erzeugen
-
Befehl:
ssh-keygen -o -t ed25519 -C "mein.name@abus-kransysteme.de" -f /c/ein/Verzeichnis/Dateiname
Erklärung:Parameter Erläuterung -o OpenSSH-Format -C E-Mail-Adresse als Kommentar, sonst wird der PC Name verwendet. Das ist besonders wichtig auf Citrix. Der Kommentar findet sich später in dem öffentlichen Teil des Schlüssels (in der Datei mit der Endung .pub). -f Angabe des Pfades des öffentlichen Schlüssels. Achtung Linux schreibweise. -t Da GitLab den ED25519-Algorithmus bevorzugt, nutzen wir diesen, um den Schlüssel anzulegen. Dazu den Schalter t ergänzen und den Wert ed25519 dahinter angeben. Der erzeugte Schlüssel wird üblicherweise im Ordner %userprofile%.ssh erzeugt. Unter Citrix wird %userprofile% auf Laufwerk L:\ umgeleitet. Wenn der Ordner nicht existiert, wird er normalerweise von ssh-keygen angelegt. Das funktioniert unter Citrix (Windows 2016) aber nicht. Dort wird der Schlüssel nur dann erzeugt, wenn der Ordner vorher existiert. Der Explorer unter Citrix verweigert aber das Anlegen eines Ordners, dessen Namen mit einem Punkt beginnt. Um das zu umgehen bestehen folgende Möglichkeiten:
- In Git Bash mit dem Befehl mkdir das Verzeichnis erzeugen.
- SpeedCommander nutzen, um den Ordner anzulegen.
- Bei Verbindung mit dem Intranet: lokalen Explorer starten und dort den Ordner anlegen.
- Einen Ordner anderen Namens anlegen und mittels des Schalters f (s.u.) dahin verweisen.
ssh-keygen erzeugt zwei Dateien: Eine für den privaten Schlüssel (ohne Datei-Endung) und eine für den öffentlichen Schlüssel (mit Datei-Endung .pub). Anstelle des Standard-Namens (der sich aus dem Präfix id_ gefolgt von der Bezeichnung des verwendeten Algorithmus zusammensetzt, bspw. id_rsa) kann mit dem Schalter f ein anderer Name angegeben werden. Den Namen ohne Endung angeben, ggf. inkl. Pfadangabe. Achtung: Der dort angegebene Pfad muss allerdings existieren, sonst wird eine Fehlermeldung zurückgegeben. Bei der Pfadangabe Linux-Schreibweise beachten! Ohne (korrekte) Pfadangabe werden die Schlüsseldateien mit diesem Namen direkt unter L:\ angelegt und nicht im Verzeichnis .ssh.
Allerdings ist es sinnvoll den Standard-Namen zu behalten. Das vereinfacht später die Anwendung, da der SSH-Agent die Standard-Namen kennt und Schlüssel unter diesen Namen sucht, wenn kein Name explizit angegeben ist.
Git Repository Klonen
-
Ordern erstellen indem das Repository gespeichert werden soll.
-
Über die Bash:
git clone git@bitbucket.org:abus-kransysteme/industrial-analytics-mobile.git (hier natürlich das richtige Repository angeben)
Über die UI:
-
Zu Beginn wird gefragt ob dem host vertraut wird. Dies bitte mit „yes“ beantworten. Dann wird der Server dem PC bekannt gemacht.
Navigation
Zurück | Weiter |
---|---|
GIT mit GIT Extensions unter Windows, lokal einrichten | GIT Einstellungen - config |