fragen stichworte

So richten Sie ein sicheres Git-Repository ein

Ich habe dieses Tutorial befolgt, um ein Git-Repository in einer EC2-Instanz einzurichten. http://git-scm.com/book/ch4-4.html. Grundsätzlich füge ich einen neuen git -Nutzer hinzu und füge meinen öffentlichen Schlüssel in authorized_keys ein. Nach dem Einrichten des Benutzers git initialisiere ich einfach ein neues Repo mit git init --bare.

Ich habe jedoch festgestellt, dass ich es leicht klonen kann, ohne meinen privaten Schlüssel zu benötigen. Gibt es eine Möglichkeit, es zu erzwingen, dass es nur über SSH verfügbar ist, so dass Authorized_keys befolgt wird? Ich vermute, es verwendet den Standard von git, Port 9418, der scheinbar keine Authentifizierung unterstützt.

UPDATE

Ok, ich habe es mit einer neuen Box ohne Schlüssel ausprobiert und konnte mich nicht einloggen oder mein Repo klonen. Mir wurde klar, dass ssh-add -D aus irgendeinem Grund nicht für mich funktionierte. Ich wähle die hilfreichste Antwort, danke.

antworten

An Port 9814 läuft git-daemon (z. B. Klon, git clone git://git.example.com/repo). Dies ist für ein internes git Repository gedacht. Lesen Sie die Dokumentation für weitere Details.

Sie haben zwei weitere Optionen zum Einrichten eines Remote-Servers git:

  • SSH-Server: git clone ssh://git.example.com/git/repo
  • HTTP-Server git clone https://git.example.com/git/repo

SSH ist viel einfacher einzurichten. Sie müssen lediglich sicherstellen, dass alle Mitwirkenden Zugriff auf das SSH-Konto haben. Dies erfolgt normalerweise über SSH-Schlüssel. Jeder Entwickler fügt seinen öffentlichen Schlüssel einem git SSH-Konto hinzu.

Denken Sie daran:

  • Geben Sie das Protokoll in Ihrem Befehl an (d. h. ssh, git, http oder https).
  • Stellen Sie sicher, dass Sie die Firewall richtig eingerichtet haben:
    • Normalerweise Port 22 für ssh
    • Normalerweise Port 443 für https
    • Die anderen beiden sollten vermieden werden, jedoch für Port 9814 für git und Port 80 für http

Sie scheinen unter der Annahme zu sein, dass der Git-Daemon dafür verantwortlich ist. Haben Sie bestätigt, dass git-daemon tatsächlich auf dem System läuft? Überprüfen Sie die Prozessliste sowie die Liste der offenen Ports:

$ ps auxwww | grep git-daemon
$ sudo netstat -ptuna | grep 9814

Wenn git-daemon nicht läuft und an Port 9814 nichts zu hören ist, ist möglicherweise etwas anderes nicht in Ordnung - vielleicht hat der neue git-Benutzer, den Sie hinzugefügt haben, kein Passwort gesetzt oder die SSH-Konfiguration verwendet Kerberos und Sie haben ein gültiges Serviceticket.

HTTP und SSH sind nur zwei der ungefähr sechs Protokolle, die git unterstützt. Ich glaube, dass Git nur SSH mit URLs der Form user @ host verwendet, also bin ich ziemlich sicher, dass es ein Authentifizierungsproblem mit Ihrem git-Benutzer ist.

Wenn Sie den Repo klonen, sehen Sie sich die Authentifizierung Ihres Systems an (normalerweise/var/log/auth.log oder/var/log/secure). Wenn Sie während des Klonvorgangs SSH-Logins für den git-Benutzer sehen, wird SSH und nicht git-daemon verwendet.