In meiner virtuellen Entwicklungsumgebung möchte ich einen Git-Server installieren, damit kann ich sowohl von innerhalb der virtuellen Maschine als auch von anderen Clients auf die Git-Repositories zugreifen kann. Damit schaffe ich eine einfache Möglichkeit meine Dateien über mehrere Clients hinweg aktuell zu halten und zu verwalten.
Begriffserklärung
Bevor es losgeht sind noch die Unterschiede von einem normalen Git Repository und einem bare Git Repository zu definieren.
Normales Git Repository = git ini
Der Befehl „git init“ wurde bereits mal am Rande in diesem Artikel erwähnt Python Entwicklungsumgebung – Schritt 4: Atom Editor mit Git verbinden.
Es lässt sich damit in jedem beliebigen Verzeichnis durch den Entwickler/Benutzer ein lokales Git-Repository auf der Festplatte eines PCs erstellen. Es gibt dabei keine Verbindung zu einem Git-Server.
Der Entwickler legt sich das git-Repository nur für sich an, um seine lokalen Skripte damit auf seinem eigenen PC zu verwalten. In Atom ist das durch die tiefe Integration von Git und GitHub sehr einfach möglich.
Es handelt sich also um ein Git-Arbeits-Repository eines einzelnen Entwicklers.
bare Git Repository = git init –bare
Im Gegensatz dazu ist das bar Git Repository ausschließlich zum Teilen gedacht. Mit diesem Repository wird nicht direkt gearbeitet, sondern die Entwickler mit den Zugriffsrechten können Dateien dort einspielen (= commit) oder abholen (= pull)
Virtuelle Maschine – eigene IP-Adresse vergeben
Die virtuelle Maschine benötigt eine richtige IP-Adresse, damit Clients von außerhalb auf die Git-Repositories zugreifen können. Das einfachste ist eine Netzwerkbrücke für die virtuelle Maschine zu konfigurieren. Damit erhält die bei jedem Start vom DHCP-Server eine eigene IP-Adresse zugewiesen. Am besten startet ihr die Maschine und lasst euch die IP-Adresse anzeigen.

Am besten startet ihr die Maschine und lasst euch die IP-Adresse anzeigen.
ifconfig
Gib mir gerne einen Kaffee ☕ aus!
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.
bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj
Git-Version prüfen
Git wird standardmäßig mit Ubuntu ausgeliefert. Die aktuelle Version könnt ihr einfach mit dem Befehl prüfen:
git version
Fehlt die Git-Installation auf eurer Maschine, lassen sich die Pakete über die Repositories einfach nachinstallieren.
sudo apt install git
Benutzer und Gruppen
Auf dem Git-Server sind noch einige Anpassungen an den Benutzern und Rechten vorzunehmen, um die Verwaltung ein wenig einfacher zu gestalten.
Es gibt zwei unterschiedliche Wege, wie man als Entwickler auf den Git-Server zugreifen kann.
- Seperates Benutzerkonto pro Entwickler auf dem Git-Server
- Gemeinsames Benutzerkonto für alle Entwickler
Git erkennt den jeweiligen Entwickler an dem in der „.gitconfig“ angegebenen Benutzernamen und der E-Mail-Adresse. Es sollte deshalb darauf geachtet werden, dass bei einer größeren Entwicklergruppe die Informationen aussagekräftig sind.
Ich fand es ganz gut, für Git eine eigene Benutzer-Gruppe anzulegen, in die jeder Benutzer aufgenommen wird. Das setzt voraus, dass jeder ein eigenes Benutzerkonto erhält und der Git-Gruppe zugeordnet wird.
sudo groupadd gitusers
Meinen bestehenden Benutzer „dev“ füge ich dann gleich der neuen Git-Gruppe hinzu.
sudo usermod -a -G gitusers dev
In Ubuntu werden die Gruppenzugehörigkeiten in der Datei /etc/group verwaltet und können dort über das Terminal eingesehen werden.
cat /etc/group

bare Git Repository anlegen
Die öffentlichen Git-Repositories habe ich das Verzeichnis „/srv/git/repositories“ auf dem Server angelegt und die Rechte entsprechend angepasst.
sudo mkdir -p /srv/git/repositories/test sudo chgrp gitusers /srv/git/repositories/test sudo chmod g+ws /srv/git/repositories/test

Die Initialisierung eines bare Git Repositories in dem soeben angelegten Verzeichnis geht mit
sudo git init --bare --shared=group /srv/git/repositories/test

Führt man im Verzeichnis ein „ls -la“ aus, sieht man, dass dort die erforderlichen Ordner und Dateien angelegt wurden.
Die aufgeführte Möglichkeit die Git-Benutzer über die Gruppe „gitusers“ auf dem Git-Server zu verwalten fand ich sehr transparent. Ihr könnt damit auch gleich per SSH einen Zugriff auf das Git-Repository erlangen, wenn ihr euren öffentlichen SSH-Schlüssel in diesem Konto hinterlegt. Wie das funktioniert beschreibe ich weiter unten.
Ich möchte aber auch noch zeigen, wie man den Zugriff auf das Git-Repository mit allgemeinen User ermöglichen kann.
Zu diesem Zweck lege ich den Benutzer „git“ an und füge den auch gleich der Gruppe „gitusers“ hinzu. Was auffällt, ich brauche dabei dem neuen Benutzer nicht mehr die Rechte für den Zugriff auf das Git-Repository gewähren. Die Zugriffsrechte bekommt der User „git“ automatisch mit der Gruppenzugehörigkeit zu „gitusers„.
sudo adduser git sudo usermod -a -G gitusers git

Die Gruppenzugehörigkeit lässt sich wieder in der Datei „/etc/group“ prüfen.

Der Benutzer „git“ wird in diesem Beispiel dafür genutzt um auf das Git-Repository von einem beliebigen Git-Client aus zuzugreifen. Es ist aber nicht zwingend erforderlich diesen Benutzer zu verwenden. Wie oben erwähnt funktioniert der Zugriff auch über euren eigenen Benutzer auf dem Git-Server. Ihr müsst den Benutzer lediglich der Gruppe „gitusers“ hinzufügen, so dass ein Zugriff auf das Verzeichnis „/srv/git/repositories/test“ möglich ist.
SSH-Server installieren
Die Kommunikation zwischen Git-Server und den angeschlossenen Clients geht über SSH. Damit das reibungslos funktioniert, muss auf dem Git-Server der SSH-Server installiert sein. Die Installation geht ebenfalls sehr einfach aus den Repositories.
sudo apt install openssh-server

Den SSH-Server kann man neustarten mit dem Befehl
sudo systemctl restart sshd
Ihr könnt bereits jetzt mit jedem Client auf die Linux-Maschine per SSH zugreifen.
ssh user@ip-adresse
Auf Windows-PCs könnt ihr als SSH-Client könnt ihr z.B. den bekannten PuTTY verwenden oder wie in diesem Beitrag ➡ Git installieren unter Ubuntu – Windows kurz beschrieben „Git Bash“.
Nach der erfolgreichen Installation des OpenSSH-Server können wir nun den Schlüsselaustausch vornehmen. Dabei verwende ich den Benutzer git, der im vorherigen Abschnitt angelegt wurde. Ihr könnt aber selbstverständlich auch euer eigenes Benutzerkonto auf dem Linux-Server verwenden.
Wir wechseln zum neuen Benutzer „git“
su git
Die SSH-Schlüssel werden im Home-Verzeichnis der User im Ordner „~/.ssh“ in der Datei „authorized_keys“ gespeichert.
mkdir .ssh touch .ssh/authorized_keys
Achtung!
Wenn ihr diesen Befehlt ausführt, dann ändert ihr die Zugriffsrechte auf die Datei. Der Benutzer „git“ hat dann keinen Zugriff mehr. Lediglich die User, die sudo verwenden dürfen können die Datei noch bearbeiten.
chmod 600 .ssh/authorized_keys
Eigenes SSH-Schlüsselpaar erzeugenWie ihr ein eigenes SSH-Schlüsselpaar erzeugen könnt habt ich in dem Artikel |
Nachdem der Schlüssel in der „authorized_keys“ hinterlegt ist, sollte der SSH-Dienst neu gestartet werden.
sudo systemctyl restart sshd
Hier gilt, führt ihr den Befehlt mit dem Benutzer „git“ aus, dann erhaltet ihr die Fehlermeldung:
„git is not in the sudoers file. The incident will be reported.“
Die Gruppenzugehörigkeit könnt ihr in der Datei „/etc/group“ einsehen.
cat /etc/group
Den Inhalt der Datei „authorized_keys“ könnt ihr z.B. mit dem Editor „nano“ bearbeiten.
sudo nano /home/git/.ssh/authorized_keys
Bildquelle: Gemeinfrei-ähnlich freigegeben durch unsplash.com Yancy Min

ist absolut technik-begeistert und großer Fan von Linux und Open Source. Raspberry Pi Bastler der ersten Stunde und nach wie vor begeistert von dem kleinen Stück Hardware, auf dem er tolle Projekte umsetzt. Teilt hier seine Erfahrungen mit Nextcloud, Pi-hole, YubiKey, Synology und openmediavault und anderen spannenden IT-Themen. Nutzt Markdown und LaTeX zum Dokumentieren seiner Projekte und Gitea zum Versionieren. Sitzt vor einem 49“ Monitor, nutzt Windows und MacOS zum Arbeiten, Linux auf seinen Servern und virtuellen Maschinen und hört dabei Spotify und MP3s und Radio-Streams über seinen RadioPi.