seeseekey.net - Invictus Deus Ex Machina

Nachdem ich versuchte Git per WebDAV in Verbindung mit ownCloud einzurichten, fiel mir ein, das die größeren Paketen (ab Premium) bei all-inkl.com auch einen SSH Zugang beinhalten. Mit diesem ist es relativ einfach das Webhosting Paket als Server für Git Repositories zu benutzen. Sollte auf dem lokalen Rechner noch kein SSH-Schlüssel erzeugt worden sein, so kann dies mittels:

ssh-keygen -t rsa -C "seeseekey@example.org"

nachgeholt werden. Nun kann der Schlüssel an den all-inkl Server übertragen werden:

ssh-copy-id -i ~/.ssh/id_rsa.pub ssh-nutzername@example.org

Anschließend ist es möglich sich mit dem all-inkl SSH Server ohne Authentifikation über ein Passwort anzumelden:

ssh ssh-nutzername@example.org

Dort legen wir in dem Ordner in welchem unserer Git Repository landen soll ein leeres Repository an:

git init --bare

Als nächsten Schritt trägt man einen Remote an ein lokales Git Repository an:

git remote add origin ssh://ssh-nutzername@example.org/www/htdocs/nutzername/repos/Example.git

Danach kann das lokale Repository mit dem Befehl:

git push origin master

auf den entfernten Server kopiert werden. Benötigt man es auf einem anderen Rechner so kann das ganze mittels:

git clone ssh://ssh-nutzername@example.org/www/htdocs/nutzername/repos/Example.git

bewerkstelligt werden.

7 Kommentare

  1. Hallo,
    wollte mich kurz bedanken. Anhand deiner Konfiguration konnte ich alles ohne Probleme konfigurieren! 🙂

    Antworten

  2. Stefan Höhn

    Erstmal vielen Dank für deine Anleitung, die mir sehr weitergeholfen hat.

    Meine Intention ging allerdings ein Stück weiter, denn ich wollte nicht mit SSH auf das git repo zugreifen, sondern mit HTTP, damit ich beliebige Benutzer administrieren kann, die auf das Repo zugreifen sollen, ohne dass ich eine aktive git Komponente auf dem Server habe und das hat mich einige Nerven gekostet.

    Hier ist die Anleitung
    1) Anlegen der Zugriffsdaten

    Antworten

  3. Stefan Höhn

    … hier geht es weiter, da ich versehentlich den Kommentar abgeschickt habe…

    0) Am besten legt man erst eine Subdomain an, was den Zugriff später einfach eleganter gestaltet
    1) Anlegen der Zugriffsdaten
    Im Hauptverzeichnis der subdomain legt man eine .htaccess mit folgendem Inhalt an:

    AuthUserFile /www/htdocs/meinUser/git/.htpasswd
    AuthGroupFile /dev/null
    AuthName “Mein GIT Repo”
    AuthType Basic

    require valid-user

    Options +Indexes

    Danach erzeugt man mit htpasswd die entsprechenden User und legt diese Datei an die oben eingetragene Stelle AuthUserFile /www/htdocs/meinUser/git/.htpasswd

    3) Auf dem Server muss man nun ein Bare-Repo anlegen(siehe oben) und man push die Daten wie oben beschrieben über SSH auf den Server

    4) Ganz wichtig und das hat mich Nerven gekostet, bis ich es gefunden habe:
    Auf dem Server(!) muss man im Git Repo ein “git update-server-info” ausführen (im Zweifel mit –force)

    5) Nun geht man in ein neues Verzeichnis und kann nicht direkt ein “git clone” ausführen, sondern muss zunacht ein “git init” durchführen.

    6) Und jetzt endlich kann man mit git clone http://username:password@meineGitDomain/meinRepo.git auf das repo mit http zugreifen.

    Ich hoffe, dass vielen anderen diese Anleitung viel Zeit erspart.

    Antworten

    • Patrick Klose

      Danke für die Beschreibung. Damit funktioniert ein git klone problemlos.

      Leider hänge ich jetzt beim push. Sobald ich git push origin master eingebe, erhalte ich folgende Fehlermeldung:

      error: Cannot access URL https://user:pwd@git.repo.url/repo/, return code 22
      fatal: git-http-push failed

      Wenn man nach der Fehlermeldung sucht, findet man schnell Lösungsvorschläge. Aller benötigen allerdings Zugriff auf die Apache Config, was wir bei all-inkl.com ja nicht haben. Gibt es hier noch eine andere Lösung, die auch mit den Hosting Paketen bei all-inkl funktioniert?

      Antworten

  4. Leider bin ich an einer ähnlichen Stelle dann auch gescheitert und diverse Emails hin- und her mit all-inkl haben leider zu keinem Ergebnis geführt. Schade und sorry, dass ich dir weiter doch keine Hoffnung machen kann 🙁

    Antworten

Schreibe einen Kommentar

You have to agree to the comment policy.