PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verwendung git-shell - Hilfe erbeten



pixelpillar
10.12.2011, 09:00
Guten Morgen zusammen,

mein Vorhaben die DS710+ als zentrales Git-Repository zu verwenden scheitert daran, dass ich die git-shell nicht zum laufen bekomme.

Was habe ich bereits getan:

Einen User git-admin + home-Verzeichnis angelegt
git über ipkg installiert -> git-shell ist vorhanden uns liegt unter /opt/bin/git-shell
Git-Repository angelegt und Dateien hineingepusht
git-admin kann über normale ssh-Shell (sh) auf Repository zugreifen, updaten usw. und sich natürlich auch komplett über SSH einloggen (was ich aber nicht möchte)
git-shell in /etc/shells hinzugefügt und git-shell als Standard-Shell für git-admin in /etc/passwd eingetragen
SSH neu gestartet und login von "git-admin" erneut versucht -> "permission denied"


SSH in verbose-Mode gibt nach Passworteingabe folgende Meldung aus:



git-admin@192.168.1.111's password:
debug1: Authentication succeeded (password).
Authenticated to 192.168.1.111 ([192.168.1.111]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = de_DE.UTF-8
Permission denied, please try again.
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
debug1: channel 0: free: client-session, nchannels 1
Connection to 192.168.1.111 closed.
Transferred: sent 2000, received 2368 bytes, in 0.0 seconds
Bytes per second: sent 228025.7, received 269982.4
debug1: Exit status 1


Laut git-Manual sollten obige Schritt ausreichen und ein Login über die git-shell zwar nicht funktionieren, dafür aber dann eben der git-Zugriff funzen. Leider tut aber beides nicht und ich kann auf das git-Repository nicht zugreifen. :(

Was ist das los? Wie kann ich die git-shell zum Laufen bekommen?
Wer von euch hat git auf der DS laufen und hat den Zugriff für "externe" User im Einsatz (ohne gleich den Zugriff über SSH auf alle Verzeichnisse zu ermöglichen)?

Danke für eure Hinweise.

pixelpillar

jahlives
10.12.2011, 14:00
Heisst das, dass git-admin sich bei "normaler" Loginshell problemlos einloggen kann und sobald du die git-Shell einträgst kommt der Permission Denied? Das klingt irgendwie "inkonsequent" für einen Computer. Stimmen denn die Rechte auf dem git-Shell File selber? Ich hätte ja auf ein Fehlen der git-Shell in /etc/shells getippt, aber das scheinst du ja gemacht zu haben. Sicher, dass du dich bei der Pfadanagabe in /etc/shells ned vertippt hast?
Ich kenn leider git ned wirklich. Wenn du aber dazu bereits wärst die Logins auf deiner DS im ssh auf PublicKey umzustellen, dann gäbe es da imho einen Weg. Dann kannst du pro Schlüssel festlegen welche Kommandos ausgeführt werden dürfen d.h. du könntest dem User eine normale Shell geben und ihm dann nur git-shell erlauben. Oder wenn sich git im sogn tunnel-Modus betreiben lässt (das weiss ich aber ned), dann kann man ssh anweisen bei einem bestimmten Schlüssel einen Dienst im Tunnelmodus aufzurufen. So betreibe ich mein Subversion.

Gruss

tobi

pixelpillar
10.12.2011, 14:55
Hallo jahlives,

ja, das mit der /etc/shells hat mich auch irritiert und ich habe die Pfade etc. mindestens 10 mal geprüft bzw. editiert... ohne Erfolg. Public key hatte ich mir auch überlegt, ist aber doch recht aufwendig, da es sich um doch recht viele User handelt. Oder ich müsste dann eben einen Schlüssel für alle einsetzen.

Mich wundert nur, dass scheinbar niemand git auf der DS einsetzt bzw. wenn dann der Einsatz via smb-share o.ä. erfolgt, was ich als super unpraktisch empfinde.

pixelpillar

jahlives
10.12.2011, 15:20
Hi pixelpillar
von git habe ich nur gehört, aber nie selber probiert. Macht denn das in etwa dasselbe wie Subversion (also Codeverwaltung)?
Ich könnte es schonmal probieren auf meiner DS, NUR läuft auf der ein Debian und von daher wird das wohl klappen. Nur damit ich's richtig verstanden habe: Du willst einen User (git-admin), der als Loginshell die git-shell hat?
Ich probiers trotzdem mal auf meiner DS und berichte...

pixelpillar
10.12.2011, 19:13
Würde ich Debian auf der DS nutzen würde, dann wäre ich schon lange fertig :) Unter Ubuntu hatte ich das Ganze in 10 Minuten erledigt! Ich habe schlicht den Eindruck, dass das busybox-Linux der DS die /etc/shells ignoriert.

Und ja, Git ist eine Versionsverwaltung, aber nicht wirklich mit Subversion vergleichbar. Beide können zwar gleiche Dinge, SVN ist jedoch von vornherein als zentrales Repository konstruiert während Git ein verteiltes System ist.

Die Installation auf der DS läuft mit ipkg völlig problemlos, daher ein Versuch wert. Besten Dank falls Du es versuchen solltest, ich bin gespannt.

ubuntulinux
11.12.2011, 12:24
Dann mach doch einen debian chroot, der sollte problemlos auf der 710+ laufen :)

pixelpillar
12.12.2011, 11:47
Ja schon, ein chroot wäre eine Möglichkeit. Ich bin jedoch einfach verwundert, dass es das ipkg-Paket "git" mit der git-shell gibt und dieses a. nicht verwendet wird bzw. b. es anscheinend nicht wirklich funzt.

Gibt es denn niemand, der der DS git mit "Bordmitteln" beigebracht hat?

jahlives
12.12.2011, 11:50
Habe es bei mir ja auch mal probiert. Ergebnis: git-shell ist keine Loginshell und damit kann man sie - zumindest nicht dass ich wüsste - ned in /etc/passwd eintragen. Wenn ich es probiere haut es mir auch nur Fehler raus

pixelpillar
13.12.2011, 09:23
Si, das ist keine Loginshell sondern hat eben nur begrenzte Rechte (für Git). Welche Fehlermeldungen hat sie denn ausgespuckt?

jahlives
13.12.2011, 09:29
So nach dem Motto: "What do you think Am I? A loginshell?" War echt ne sehr kreative Fehlermeldung :-)

pixelpillar
13.12.2011, 16:02
@jahlives: Das ist genau das was die gute git-shell tun soll, heureka! Die Frage ist nur, wie hast Du das genau gemacht? Welchem User hast Du die git-shell in der passwd gegeben? Wie genau lautet der Pfad in Deiner /etc/shells? Denn ich habe das ja auch probiert und habe schlicht und ergreifend eines "access denied" bekommen aber nicht die obige Meldung.

Kannst mir noch Deine detaillierte Beschreibung hier posten! Dann kann ich ggf. herausfinden wo der Unterschied liegt. Danke Dir!

pixelpillar
18.12.2011, 13:24
Ok, scheinbar funktioniert das mit der git-shell. Kann mir jemand jedoch noch posten wie genau er dabei vorgegangen ist. Ein "ok es geht" bringt mir leider recht wenig ;-)

spaetz
04.01.2012, 19:57
Wäre auch dran interessiert genau das hinzukriegen. Login per /bin/ash als shell geht wunderbar, sobald ich /opt/bin/git-shell als shell eintrage gibt es nichts als ein "permission denied" oder so. Ich lasse es jetzt mit /bin/ash laufen, würde den Zugriff aber gerne weiter einschränken. Warum aber geht git-shell nicht? Wenn ich es auf der Synology auf der commandozeile starte, kommt das erwartete: "fatal: Interactive git shell is not enabled." (d.h. ich kann es nicht von der Commandozeile ausführen, klar).