Schlagwort-Archiv: git

Konfiguration eines einfachen Git-Servers

Git ist ein freies Versionsverwaltungssystem für Dateien. In diesem Artikel wird die Konfiguration eines einfachen Git-Servers dokumentiert, der von Entwicklern genutzt werden kann, um ihren Code ein- bzw. auszuchecken.

Der Zugriff auf den hier beschriebenen Git-Server erfolgt ausschließlich über SSH. Die öffentlichen SSH-Schlüssel der Entwickler müssen in der Datei authorized_keys hinterlegt werden, bevor diese auf den Server zugreifen können. Doch ein Schritt nach dem anderen.

Installation von Git

Zuerst wird Git selbst auf dem Server installiert. Dies kann je nach verwendeter Distribution mit einem der folgenden Kommandos erledigt werden.

Für CentOS, Fedora, RHEL, etc.:

sudo yum install git

Für Debian, Ubuntu und Derivate:

sudo apt-get install git

Die benötigten Abhängigkeiten werden dabei von der Paketverwaltung selbstständig aufgelöst.

Git-Benutzer erstellen und SSH-Zugriff einrichten

Für die Verwendung des Git-Servers wird ein eigener Benutzeraccount erstellt. In diesem Beispiel wird dafür der Benutzer „git“ angelegt. Der Name ist jedoch frei wählbar.

Anschließend wird im HOME-Verzeichnis dieses Benutzers die Datei ~/.ssh/authorized_keys angelegt, in welche die öffentlichen SSH-Schlüssel der Benutzer eingefügt werden, welche den Server später verwenden sollen.


:~# useradd git -m
:~# su git
:~$ cd
:~$ mkdir .ssh && chmod 700 .ssh
:~$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

Ein leeres Git-Repository erstellen

Um ein neues/leeres Git-Repository zu erstellen, meldet man sich als „git“-Benutzer an und führt die folgenden Befehle aus:

mkdir verzeichnis.git
cd verzeichnis.git
git init --bare
Initialisierte leeres Git-Projektarchiv in /home/git/verzeichnis.git/

Fertig. Damit wurde ein Git-Repository erzeugt, welches von anderen Rechnern für Push- und Pull-Operationen genutzt werden kann.

Hinweis: Für die Erstellung weiterer Repositories muss die obige Prozedur wiederholt werden.

Zusätzliche Absicherung des Git-Servers

Bisher können Anwender, deren öffentlicher SSH-Schlüssel in der Datei authorized_keys des Git-Servers hinterlegt ist, sich via SSH am Server anmelden und bekommen eine Login-Shell. Dies ist evtl. nicht in jedem Fall gewünscht. Daher wird im Folgenden beschrieben, wie man den Git-Server härten kann.

Um ein Login via SSH zu verhindern, gleichzeitig aber die Ausführung von Git-Operationen zu erlauben, kann eine andere Shell für den Git-Benutzer gesetzt werden. Ob die dafür erforderliche Shell bei der Installation von Git bereits mit installiert wurde, kann mit folgendem Kommando überprüft werden:

which git-shell

Ist die git-shell installiert, liefert das Kommando den Installationspfad zurück. Dieser Pfad wird der Datei /etc/shells hinzugefügt.

Um nun die Login-Shell für den Benutzer „git“ zu ändern, wird folgendes Kommando mit root-Rechten ausgeführt.

sudo chsh -s git-shell git

Repository auf einem Client nutzen

In diesem Abschnitt beschreibe ich, wie ein Repository von einem einfachen Git-Server auf einem Client genutzt werden kann. Dabei verwende ich folgende Werte für die Umgebung.

  • FQDN des einfachen Git-Servers: git.example.com
  • Repository-Name: verzeichnis.git

git-clone via SSH-Protokoll

$ git clone ssh://git@git.example.com/home/git/verzeichnis.git

Repository als remote hinzufügen

Ich habe häufig den Fall, dass ich lokal auf meinem Client bereits ein Git-Repository habe, welches ich in das Repository auf meinem einfachen Git-Server pushen möchte. Dazu füge ich dies als remote wie folgt hinzu:

git remote add git-example ssh://git@git.example.com/home/git/verzeichnis.git

Dabei ist git-example ein Name, der mich daran erinnert, auf welchem Server das Remote-Repository liegt.

Quellen und weiterführende Informationen