Qnap als GIT-Server - SSH Probleme

veröffentlicht am : Mi, 06. 11. 2013 geändert am: Mo, 21. 08. 2017

Kategorie: Computer

Schlagworte: git qnap


Linux ist schon was tolles, insbesondere, weil man dadurch die Möglichkeit hat, den Funktionsumfang von linux basierten Geräten zu erweitern oder auch Unzulänglichkeiten auszugleichen / zu korrigieren.

Letzteres trifft auf die Qnap zu. Ich nutze für meine Softwareprojekte GIT - sowohl in der Firma (holidayinsider) als auch für meine privaten Projekte.

Das funktioniert als Versionskontrollsystem so, wie man es sich wünscht. Wer schon mal an CVS oder SVN verzweifelt ist, der sollte sich mal git ansehen. Ich habe meine git repositories auf einem Share auf meiner Qnap daheim, der Zugriff darauf geht dadurch recht leicht. Leider entwickle ich mit dem Laptop und diese Geräte zeichnen sich insbesondere dadurch aus, dass sie mobil sind und nicht immer in heimischen Gefilden genutzt werden. Was leider auch dazu führt, dass man mal nicht Zugriff auf das Laufwerk direkt hat. Deswegen ist es eher unpraktisch, das Laufwerk automatisch zu mounten (also beim Hochfahren oder einloggen). Das kann man zwar abhängig von Umgebungen machen aber das ist eine andere Geschichte... Ich habe gesehen, dass man auf der Qnap auch ein Paketverwaltungssystem hat, welches einem nahezu alle Linux-Tools nutzbar macht - unter anderem eben auch git. Die Installation war denkbar leicht, ein simpler Mausklick - und kurz warten. Einen Git-Server wollte ich so aber nicht einsetzen, sondern am ehesten über SSH das ganze machen - und SSH kann die qnap ja - eigentlich!

Denn jetzt kommen wir zur Krux - Es ist quasi unmöglich, dem SSHD der Qnap einzureden, dass man sich als normaler User anmelden kann. Man kann sich die sshd_config anschauen, so viel mal will - da steht alles drin, und dennoch geht's nicht. Auf der Oberfläche seht auch der Hinweis, dass man sich nur als admin einloggen kann.

Das ist dennoch komisch. Wenn man sich aber mal genauer den SSHD anguckt (z.B. mit strings oder hexdump) und ihn mit dem "offiziellen" sshd von Openssh vergleicht, stellt man schnell fest, dass die Jungs von QNnap sich das Ding einfach zurechtgeschnippelt  und eben den Support für andere User hard disabled haben. Ok, netter versuch QNap, aber ich bin root auf dem Ding - auch wenn er da nicht root heißt - lets hack. emoji people:smirk Die Lösung ist, über die Oberfläche jetzt schnell das Package für openssh installieren, dann bekommt man die offiziellen Binaries. Damit hat man schon mal die halbe Miete, ein Binary das zumindest das tut, was es soll. Das allein hilft allerdings leider auch nix, denn der qnap-sshd ist ja noch drauf und wird verwendet. Man könnte auch die Start-Skripten umschreiben oder ein eigenen Startup machen. Beides hat seine Vor- und Nachteile. Letzterer hat den Nachteil, dass man den SSHD nicht mehr über die Oberfläche steuern kann. Mein Ansatz:

  1. Original umbenennen, liegt in /usr/sbin: mv sshd sshd.qnap
  2. link auf den offiziellen SSHD anlgen, auch in /usr/sbin: ln -s /opt/sbin/sshd
  3. sshd neu starten - entweder über die Oberfläche (Häkchen an / Häkchen aus) oder mit : killall sshd; /usr/sbin/sshd -f /etc/ssh/sshd_config

das sollte es gewesen sein, jetzt kann ich mich selbst einloggen und den Pfad zum Repository angeben... Aber halt, wie ist das? Ich hatte ein eigenes Laufwerk dafür und für alle Laufwerke auf der Qnap existiert ein Link in /share... also wenn das Laufwerk "development" hieß, das git Repository in "git/repo" liegt, ist der Pfad auf der qnap also /share/development/git/repo. in Git gibt man einfach ein:

git clone user@qnap:/share/development/git/repo

Falls es einem schlaflose Nächte bereitet, dass der user sich auch einloggen kann auf der Qnap, der kann zusätzlich noch in der /etc/passwd die Loginshell für den entsprechenden user von /bin/sh auf /bin/git-shell umstellen - dann gibt es kein login mehr, nur noch git. Allerdings: die User settings sind dann "durcheinander". Die Files gehören dann diesem User, was evtl. etwas komisch sein könnte. Noch ein Nachtrag: beim nächsten Update sind die Änderungen natürlich wieder futsch, dann muss man evtl. von vorne beginnen. Also, falls ihr an eurer Qnap solche dinge gemacht habt, merkt euch, wie ihr das wieder hin bekommt, oder lasst die nächsten Updates einfach aus ;-)

Update 3/2014: Mit dem letzten Update der Qnap-Firmware ist die sache etwas komplizierter geworden. So kann man z.B. den SSHD nicht mehr neu starten, wenn man per SSH angemeldet ist. Ihr solltet das also über eine Telnetverbindung machen. Außerdem wird die /etc/ssh/sshd_config neu geschrieben. Wenn ihr da Änderungen gemacht habt, solltet ihr die evtl. nachtragen, sonst kommt ihr nicht mehr ran. Insbesondere die erlaubten User sind dann weg.

Happy hacking...

erstellt Stephan Bösebeck (stephan)