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


12

Eu tenho um repositório git hospedado no meu servidor SunOS, que eu uso remotamente através do ssh

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

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

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

testUser é capaz de navegar e navegar por todo o servidor.

Como posso criar usuários que só podem acessar o git remotamente, para clonar / puxar / empurrar etc ...

obrigado

Respostas:


12

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

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


1
+1 para gitosis ... Foi feito exatamente para esta configuração.
quer

12

Você basicamente tem duas opções.

  1. Como o topdog mencionado, ao criar usuários no servidor, defina seu shell como git-shell ( entrada do livro aqui ). Isso permitirá que o usuário efetue login via SSH, mas em vez de executar um shell normal com todos os recursos (por exemplo, sh, bash, etc.), Ele executará o git-shell, que apenas fornece acesso à funcionalidade git.

  2. Como alternativa, você pode disponibilizar seus repositórios por outro protocolo, como TCP (usando git-deamon ) ou HTTP / HTTPS. Eu recomendaria apenas esse cenário para acesso somente leitura.

Você mencionou que deseja dar suporte à funcionalidade "push" para seus usuários, portanto, você deve realmente optar pela opção 1.


5

você precisa mudar seu shell para git-shell, que lhes dará acesso apenas às funções git.


Obrigado topdog. Basicamente, o usuário estará usando seu próprio shell git no seu Mac. Eu realmente não quero que ele seja capaz de ssh para o servidor. Portanto, se o repositório git estiver em mydomain.com a partir do computador testUser / Mac, no terminal ele poderá simplesmente clonar ssh: //myUser@mydomain.com/path/to/git, solicitando sua senha e faça o download do repositório. Eu apenas tentei agora definir seu shell para git-shell. Ele é solicitado ao chamar o clone, mas a senha está sendo rejeitada.
Bach

você precisa configurar o shell myUsers como git-shell, se tudo o que você deseja que eles façam no servidor é executar comandos git e não conseguir fazer o shell. Para obter as solicitações de senha, use as teclas. Para uma cobertura mais detalhada do git em um olhar servidor no livre git livro progit.org/book/ch4-0.html
topdog

obrigado pela referência do livro! muito útil. Acabou usando gitolite, ainda tendo problemas com a instalação.
Bach

git-shell : "Este é um shell de login para SSH contas para fornecer acesso Git restrito Ele permite a execução apenas do lado do servidor Git comandos implementar a funcionalidade puxar / push, além de comandos presentes em um subdiretório chamado git-Shell-comandos personalizada. diretório inicial do usuário ". No Linux, adicione "/ bin / git-shell" a "/ etc / shells" e depois "usermod --shell / bin / git-shell $ USER". Btw, o livro git está agora em git-scm.com/book/en/ch4-0.html
David Tonhofer

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.