Crea un utente SSH con privilegi limitati per utilizzare solo il repository Git


12

Ho un repository git ospitato sul mio server SunOS, che utilizzo in remoto tramite ssh

git clone ssh://myUser@mydomain.com/path/to/git

Ora ho bisogno di aggiungere più utenti per poter accedere a quel repository, ma non sono sicuro di come.

Ho aggiunto un testUser a ssh, ma non riesco a limitare i privilegi dell'utente di usare solo git.

testUser è in grado di navigare e navigare nell'intero server.

Come posso creare utenti che possono accedere a git solo da remoto, per clonare / tirare / spingere ecc ...

Grazie

Risposte:


12

Potresti considerare di usare gitolite sotto un singolo utente invece di impostare più utenti git-shell (e le autorizzazioni di gruppo e gruppo richieste in modo che possano condividere l'accesso ai repository).

gitolite funziona sotto un singolo utente normale sul server e usa le chiavi pubbliche SSH per differenziare l'accesso ai repository Git (vedere " come gitolite usa ssh " per alcuni dettagli su come gitolite fa la sua identificazione basata su SSH). gitolite offre un controllo degli accessi per repository, per ramo e persino per percorso.


1
+1 per la gitosi ... È stato creato esattamente per questa configurazione.
Jeremy Bouse,

12

Fondamentalmente hai due opzioni.

  1. Come accennato da topdog, quando si creano utenti sul server, impostare la shell su git-shell ( voce del libro qui ). Ciò consentirà all'utente di accedere tramite SSH, ma invece di eseguire una normale shell completa (es. Sh, bash, ecc.) Verrà eseguito, git-shell, che fornisce solo l'accesso alla funzionalità git.

  2. In alternativa, puoi rendere disponibili i tuoi repository tramite un altro protocollo, come TCP (usando git-deamon ) o HTTP / HTTPS. Raccomanderei solo uno scenario del genere per l'accesso in sola lettura.

Hai detto di voler supportare la funzionalità "push" per i tuoi utenti, quindi dovresti davvero scegliere l'opzione n. 1.


5

devi cambiare la loro shell in git-shell, che darà loro solo l'accesso alle funzioni git.


Grazie topdog. Fondamentalmente l'utente utilizzerà la propria shell git sul suo Mac. Non voglio davvero che sia in grado di inviare ssh al server. Quindi, se il repository git si trova su mydomain.com da testUser computer / Mac, nel terminale potrebbe semplicemente clonare ssh: //myUser@mydomain.com/path/to/git potrebbe ricevere la password, quindi scaricare il repository. Ho appena provato ora a impostare la sua shell su git-shell. Viene richiesto quando si chiama clone ma la password viene rifiutata.
Bach,

devi impostare myUsers shell su git-shell se tutto ciò che vuoi che facciano sul server è eseguire i comandi git e non essere in grado di eseguire la shell. Per le richieste della password, utilizza le chiavi. Per una copertura più dettagliata di git su un server, guarda il libro git gratuito progit.org/book/ch4-0.html
topdog

grazie per il riferimento del libro! molto utile. Finì per usare gitolite, ma continuando ad avere problemi con l'installazione.
Bach,

git-shell : "Questa è una shell di accesso per gli account SSH per fornire accesso Git limitato. Permette l'esecuzione solo di comandi Git lato server che implementano la funzionalità pull / push, oltre a comandi personalizzati presenti in una sottodirectory denominata git-shell-command in la home directory dell'utente. " Su Linux, aggiungi "/ bin / git-shell" a "/ etc / shells" e poi "usermod --shell / bin / git-shell $ USER". A proposito, il libro git è ora su git-scm.com/book/en/ch4-0.html
David Tonhofer

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.