2017-06-10 1 views
2

Ich habe einen Git update Hook, der prüft, ob der Zweig, der aktualisiert wird, Master ist und wenn ja, sendet eine Fehlermeldung an den Client. Ich möchte es jetzt so machen, nur push es zu meistern, die ich selbst machen werde.So ermitteln Sie den SSH-Fingerabdruck des Clients für die Verwendung in Git-Hook

Momentan habe ich zwei SSH-Schlüssel zum authorized_keys eines Benutzers git hinzugefügt. Einer von ihnen gehört mir, und ich beabsichtige, andere hinzuzufügen. Ich las here:

Wenn Sie alle erlaubt haben mit einem einzigen Benutzer (zB „git“) über Public-Key-Authentifizierung zu verbinden, können Sie, dass Benutzer eine Shell-Wrapper geben müssen, die die Benutzer bestimmt verbindet basierend auf dem öffentlichen Schlüssel, und setzen Sie eine Umgebungsvariable entsprechend.

Aber sie erklären nicht, wie man das macht, und ich kann keine Beispiele finden, wie man so etwas macht. Wie ermitteln Sie den Fingerabdruck der Maschine, in der sich die SSH befindet? Ich habe auch überlegt, ein separates "git-admin" Benutzerkonto zu erstellen, aber die blanken Repos befinden sich im Verzeichnis/home/git, und ich konnte nicht darüber nachdenken, wie beide Benutzer dasselbe Repo mit derselben URL aufrufen. Ich kann nicht die Benutzer das gleiche Home-Verzeichnis teilen, weil dann die authorized_keys für beide gelten würde, und ich hätte keine Möglichkeit, eine Umgebungsvariable nur für die eine und nicht die andere festzulegen.

Mein Server läuft unter FreeBSD.

Irgendwelche Gedanken darüber, wie ich erreichen kann, was ich versuche zu tun?

Antwort

1

Dies wird ssh forced command, and is used for instance by gitolite

genannt Entweder könnte:

  • gitolite auf der Server-Seite installiert werden, die den Vorteil dieser nativen SSH-Funktion nimmt, und kann schreiben (push) den Zugriff auf bestimmte Zweige begrenzen .
    Es ist ein authorization layer und you can test for access for specific branches.

    if gitolite access -q reponame username W master 
    then 
        ... 
    
  • oder ändern Sie Ihren ~/.ssh/authorized_keys einen erzwungenen Befehl hinzufügen, das ist ein Skript auf jeden ssh-Aufruf aufgerufen, die dann testen können, welche Taste in diesem Anruf beteiligt ist, Sie zu identifizieren und lassen Sie den Befehl weiter.
    Das ist, was ein „ssh gezwungen Befehl“ steht für (und es hat nichts mit Git zu tun)

+0

Es funktionierte :) Ich würde nie herausgefunden habe, wo diese Funktion aus zugänglich gewesen ist konnte! Vielen Dank! – papiro

+0

Ich möchte erwähnen, dass ich tatsächlich mit der 'environment =' Option ging, in der ich die USER-Umgebungsvariable auf den Namen des Besitzers des Schlüssels setzte. – papiro

+0

Schön gemacht. Das sollte funktionieren. – VonC

Verwandte Themen