{"id":1427,"date":"2016-05-08T15:00:10","date_gmt":"2016-05-08T14:00:10","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=1427"},"modified":"2024-12-01T10:13:38","modified_gmt":"2024-12-01T09:13:38","slug":"konfiguration-eines-einfachen-git-servers","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/konfiguration-eines-einfachen-git-servers\/","title":{"rendered":"Konfiguration eines einfachen Git-Servers"},"content":{"rendered":"\n<p><a href=\"https:\/\/de.wikipedia.org\/wiki\/Git\" target=\"_blank\">Git<\/a> ist ein freies Versionsverwaltungssystem f\u00fcr Dateien. In diesem Artikel wird die Konfiguration eines einfachen Git-Servers dokumentiert, der von Entwicklern genutzt werden kann, um ihren Code ein- bzw. auszuchecken.<\/p>\n\n\n\n<p>Der Zugriff auf den hier beschriebenen Git-Server erfolgt ausschlie\u00dflich \u00fcber SSH. Die \u00f6ffentlichen SSH-Schl\u00fcssel der Entwickler m\u00fcssen in der Datei <em>authorized_keys<\/em> hinterlegt werden, bevor diese auf den Server zugreifen k\u00f6nnen. Doch ein Schritt nach dem anderen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation von Git<\/h2>\n\n\n\n<p>Zuerst wird Git selbst auf dem Server installiert. Dies kann je nach verwendeter Distribution mit einem der folgenden Kommandos erledigt werden.<\/p>\n\n\n\n<p>F\u00fcr CentOS, Fedora, RHEL, etc.:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo yum install git<\/pre>\n\n\n\n<p>F\u00fcr Debian, Ubuntu und Derivate:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt-get install git<\/pre>\n\n\n\n<p>Die ben\u00f6tigten Abh\u00e4ngigkeiten werden dabei von der Paketverwaltung selbstst\u00e4ndig aufgel\u00f6st.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Git-Benutzer erstellen und SSH-Zugriff einrichten<\/h3>\n\n\n\n<p>F\u00fcr die Verwendung des Git-Servers wird ein eigener Benutzeraccount erstellt. In diesem Beispiel wird daf\u00fcr der Benutzer &#8222;git&#8220; angelegt. Der Name ist jedoch frei w\u00e4hlbar.<\/p>\n\n\n\n<p>Anschlie\u00dfend wird im HOME-Verzeichnis dieses Benutzers die Datei <strong>~\/.ssh\/authorized_keys<\/strong> angelegt, in welche die \u00f6ffentlichen SSH-Schl\u00fcssel der Benutzer eingef\u00fcgt werden, welche den Server sp\u00e4ter verwenden sollen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n<code>:~# useradd git -m\n:~# su git\n:~$ cd\n:~$ mkdir .ssh &amp;&amp; chmod 700 .ssh\n:~$ touch .ssh\/authorized_keys &amp;&amp; chmod 600 .ssh\/authorized_keys\n<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Ein leeres Git-Repository erstellen<\/h3>\n\n\n\n<p>Um ein neues\/leeres Git-Repository zu erstellen, meldet man sich als &#8222;git&#8220;-Benutzer an und f\u00fchrt die folgenden Befehle aus:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mkdir verzeichnis.git<br>cd verzeichnis.git<br>git init --bare<br>Initialisierte leeres Git-Projektarchiv in \/home\/git\/verzeichnis.git\/<\/pre>\n\n\n\n<p>Fertig. Damit wurde ein Git-Repository erzeugt, welches von anderen Rechnern f\u00fcr Push- und Pull-Operationen genutzt werden kann.<\/p>\n\n\n\n<p><em>Hinweis:<\/em> F\u00fcr die Erstellung weiterer Repositories muss die obige Prozedur wiederholt werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zus\u00e4tzliche Absicherung des Git-Servers<\/h2>\n\n\n\n<p>Bisher k\u00f6nnen Anwender, deren \u00f6ffentlicher SSH-Schl\u00fcssel in der Datei <em>authorized_keys<\/em> des Git-Servers hinterlegt ist, sich via SSH am Server anmelden und bekommen eine Login-Shell. Dies ist evtl. nicht in jedem Fall gew\u00fcnscht. Daher wird im Folgenden beschrieben, wie man den Git-Server h\u00e4rten kann.<\/p>\n\n\n\n<p>Um ein Login via SSH zu verhindern, gleichzeitig aber die Ausf\u00fchrung von Git-Operationen zu erlauben, kann eine andere <em>Shell<\/em> f\u00fcr den Git-Benutzer gesetzt werden. Ob die daf\u00fcr erforderliche Shell bei der Installation von Git bereits mit installiert wurde, kann mit folgendem Kommando \u00fcberpr\u00fcft werden:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">which git-shell<\/pre>\n\n\n\n<p>Ist die <code>git-shell<\/code> installiert, liefert das Kommando den Installationspfad zur\u00fcck. Dieser Pfad wird der Datei <strong>\/etc\/shells<\/strong> hinzugef\u00fcgt.<\/p>\n\n\n\n<p>Um nun die Login-Shell f\u00fcr den Benutzer &#8222;git&#8220; zu \u00e4ndern, wird folgendes Kommando mit <code>root<\/code>-Rechten ausgef\u00fchrt.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo chsh -s git-shell git<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Repository auf einem Client nutzen<\/h2>\n\n\n\n<p>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\u00fcr die Umgebung.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>FQDN des einfachen Git-Servers: <code>git.example.com<\/code><\/li>\n\n\n\n<li>Repository-Name: <code>verzeichnis.git<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">git-clone via SSH-Protokoll<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>$ git clone ssh:\/\/git@git.example.com\/home\/git\/verzeichnis.git<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Repository als remote hinzuf\u00fcgen<\/h3>\n\n\n\n<p>Ich habe h\u00e4ufig 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\u00f6chte. Dazu f\u00fcge ich dies als <code>remote<\/code> wie folgt hinzu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git remote add git-example ssh:\/\/git@git.example.com\/home\/git\/verzeichnis.git<\/code><\/pre>\n\n\n\n<p>Dabei ist <code>git-example<\/code> ein Name, der mich daran erinnert, auf welchem Server das Remote-Repository liegt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quellen und weiterf\u00fchrende Informationen<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/de.wikipedia.org\/wiki\/Git\" target=\"_blank\">https:\/\/de.wikipedia.org\/wiki\/Git<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/wiki.ubuntuusers.de\/Git\/\" target=\"_blank\">https:\/\/wiki.ubuntuusers.de\/Git\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/wiki.ubuntuusers.de\/chsh\/\" target=\"_blank\">https:\/\/wiki.ubuntuusers.de\/chsh\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/git-scm.com\/book\/en\/v1\/Git-on-the-Server\" target=\"_blank\">Git on the Server<\/a> {en}<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Git ist ein freies Versionsverwaltungssystem f\u00fcr 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\u00dflich \u00fcber SSH. Die \u00f6ffentlichen SSH-Schl\u00fcssel der Entwickler m\u00fcssen in der Datei authorized_keys hinterlegt werden, bevor diese auf<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/konfiguration-eines-einfachen-git-servers\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[51],"tags":[395,396,305],"class_list":["post-1427","post","type-post","status-publish","format-standard","hentry","category-linux","tag-git","tag-git-shell","tag-planet"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/1427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=1427"}],"version-history":[{"count":5,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/1427\/revisions"}],"predecessor-version":[{"id":3983,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/1427\/revisions\/3983"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=1427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=1427"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=1427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}