Mit dem Kommando ssh-keygen erstellen Sie bei Bedarf ein Schlüsselpaar (Listing 5, erste Zeile). Ein Prompt gibt Ihnen dabei die Möglichkeit, eine Passphrase einzugeben. Wie der Begriff Passphrase verdeutlicht, können Sie hier ganze Sätze angeben. Die Passphrase sichert den Zugriff auf den privaten Schlüssel. Es empfiehlt sich, eine solche zu setzen und zu notieren. Dank der auf den Desktop-Systemen laufenden Key-Manager brauchen Sie später die Passphrase nur einmal pro Sitzung einzugeben. Nutzen Sie bereits ein Schlüsselpaar, können Sie auch dieses verwenden.
Erfolgt der Aufruf von Ssh-keygen ohne Parameter, enthält anschließend die Datei id_rsa den privaten, id_rsa-pub den öffentlichen Schlüssel. Das Kommando ssh-copy-id, ein Skript aus dem Paket ssh, trägt den öffentlichen Schlüssel in die Schlüsseldatei des Hosts ein (Listing 5, zweite Zeile). Bei Bedarf legt das Skript das Verzeichnis ~/.ssh/ an und setzt die notwendigen Zugriffsrechte. Die Option -i dient zum Angeben des zu übertragenden Schlüssels. Erfolgt keine Angabe des Schlüssels, überträgt Ssh-copy-id alle auf dem Client vorhandenen öffentlichen Schlüssel.
Listing 5
$ ssh-keygen $ ssh-copy-id -i .ssh/id_rsa git@raspberrypi
Tür zu
Bleibt noch der zweite Schwachpunkt auszuräumen, der Shell-Zugriff des Anwenders git. Das Paket Git bringt dazu die sehr restriktive Git-Shell mit, innerhalb derer das System nur noch Git-Aktivitäten erlaubt. Normale Anmeldungen, etwa über SSH, blockiert das System (Abbildung 6). Zum Ändern der Shell loggen Sie sich via SSH als Anwender pi auf dem Git-RasPi ein und holen sich mit Sudo die entsprechenden Rechte (Listing 6).
Listing 6
pi@raspberrypi:~ $ sudo chsh git -s $(which git-shell)
Wie Sie aus den Varianten 1 und 2 bereits wissen, erfordert das Anlegen eines Git-Repos auf dem Server immer ein wenig Zutun des Anwenders git. Da die Git-Shell dies nun aber nicht mehr erlaubt, müssen Sie die entsprechenden Kommandos über den Raspberry-Pi-Nutzer pi auf dem Git-RasPi ausführen.
Für das in Variante 2 beschriebene Anlegen eines Bare-Repos auf dem Server sieht das dann zum Beispiel so aus wie in Listing 7. Lassen Sie sich nicht durch das doppelte git in der zweiten Zeile verwirren: Die erste Angabe (-u git) steht für den Anwender, die zweite (git init) für das Kommando.
Listing 7
pi@raspberrypi:~ $ sudo -u git mkdir /home/git/repos/projekt.git pi@raspberrypi:~ $ sudo -u git git init --bare /home/git/repos/projekt.git
Unter Stress
Kleine Repositories bringen den Git-Server auf dem Raspberry Pi nicht aus dem Tritt. Um den Extremfall zu testen, soll sich der Git-RasPi am Linux-Kernel versuchen, der nicht weniger als 25 Millionen Zeile Code auf die Waage bringt. Wir klonten ihn im Test mit dem Kommando aus Listing 8 direkt auf den RasPi, was gut funktionierte. Problematisch wurde es erst beim Auschecken: Die (sicherlich aufgrund der Verschlüsselung) anfangs bei 100 Prozent liegende Prozessorlast pendelte sich mit zunehmender RAM-Auslastung deutlich unter 10 Prozent ein. Nach knapp zwei Stunden ging dem RasPi dann jedoch endgültig die Puste aus, sprich: der Arbeitsspeicher (Abbildung 7).
Listing 8
pi@raspberrypi:~ $ sudo -u git git clone --bare git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git /home/git/repos/linux
Fazit
Der Einsatz des RasPi als Git-Server hinterlässt einen gemischten Eindruck. Hält sich der Umfang der Repos in Grenzen, läuft alles wie erwartet. Der Umgang mit dem eigenen Git-Server macht Spaß, die Kommunikation mit dem Server gestaltet sich recht einfach. Als Anwender benötigt man nur wenige Kommandos.
Der Linux-Kernel-Test zeigt jedoch auch die Grenzen des Systems auf: Allzu große Git-Projekte sollten Sie besser nicht mit dem RasPi managen. Dafür bräuchte es ein System mit mehr Arbeitsspeicher und idealerweise einer schnelleren Anbindung des Massenspeichers, etwa über die M.2-Schnittstelle.
Der Autor
Roman Jordan arbeitet seit mehr als 25 Jahren mit Linux, seit circa 5 Jahren mit der Kombination aus ARM und Linux und seit Kurzem auch mit dem Raspberry Pi.
Infos
- Software-Projekte mit Git verwalten: Roman Jordan, “Innerer Zusammenhalt”, LU 08/2018, S. 84, http://linux-community.de/41297
- Mit Git Dateien verwalten und gemeinsam nutzen: Roman Jordan, “Viele Zweige”, LU 09/2018, S. 84, http://linux-community.de/41298
- “Pro Git”, 2. Edition: https://git-scm.com/book/de/v2
- Linux-Handbuch SSH: http://openbook.rheinwerk-verlag.de/linux/linux_kap21_003.html
- Git für Windows: https://git-scm.com/download/win








