Crie um usuário SSH com privilégios limitados para usar somente o repositório Git

10

Eu tenho um repositório git hospedado no meu servidor SunOS, que eu uso remotamente por meio do ssh

git clone ssh://[email protected]/path/to/git

Agora preciso adicionar mais usuários para poder acessar esse repositório, mas não sei como.

Eu adicionei um testUser ao ssh, mas não consigo limitar os privilégios de usuário para usar somente o git.

testUser é capaz de percorrer e navegar pelo servidor inteiro.

Como posso criar usuários que só podem acessar o git remotamente, clone / pull / push etc ...

obrigado

    
por Bach 13.08.2010 / 05:54

4 respostas

10

Você pode usar o gitolite com um único usuário de configurar vários usuários git-shell (e as permissões necessárias de grupo e grupo para que possam compartilhar o acesso aos repositórios).

gitolite é executado sob um único usuário normal no servidor e usa Chaves públicas SSH para diferenciar o acesso aos repositórios Git (veja “ como o gitolite usa o ssh ” para alguns detalhes sobre como gitolite faz sua identificação baseada em SSH). gitolite oferece por repositório, por ramo e até mesmo algum controle de acesso por caminho.

    
por 14.08.2010 / 07:40
10

Você basicamente tem duas opções.

  1. Como mencionado acima, quando você cria usuários no servidor, defina seu shell como git-shell ( entrada de livro aqui ). Isso permitirá que o usuário faça o login via SSH, mas em vez de executar um shell normal, com todos os recursos (por exemplo, sh, bash, etc), ele será executado, git-shell, que fornece acesso somente à funcionalidade git. >

  2. Alternativamente, você pode disponibilizar seus repositórios através de outro protocolo, como o TCP (usando git-deamon ) ou HTTP / HTTPS. Eu só recomendaria esse cenário para acesso somente leitura.

Você mencionou que deseja oferecer suporte à funcionalidade 'push' para seus usuários, então você deve usar a opção nº 1.

    
por 13.08.2010 / 19:03
3

você precisa mudar o shell para o git-shell, que só dará acesso somente às funções do git.

    
por 13.08.2010 / 06:30
0

Outra maneira de fazer isso é limitar o acesso dos usuários no ssh.

( link )

O exemplo é apenas usando apenas um usuário, mas se os usuários estiverem no mesmo grupo, você pode filtrá-los usando a diretiva group. Algo como

AllowTcpForwarding yes
X11Forwarding yes

Match Group Users
         AllowTcpForwarding no
         X11Forwarding no
         $Here is a directive for git$
    
por 13.08.2010 / 10:18