Como configurar um repositório Git seguro?

5

Eu segui este tutorial para configurar um repositório git em uma instância do EC2. link . Basicamente, eu adiciono um novo usuário git e incluo minha chave pública em authorized_keys. Depois de configurar o usuário git , apenas inicializo um novo repositório por git init --bare .

No entanto, notei que posso clonar facilmente sem precisar da minha chave privada. Existe uma maneira de forçá-lo a estar disponível apenas via SSH, de modo que as authorized_keys sejam seguidas? Eu estou supondo que está usando o padrão de git que é a porta 9418 que parece não suportar autenticação.

UPDATE

Ok, tentei em uma caixa nova sem nenhuma chave e não consegui fazer login ou clonar meu repositório. Eu percebi que ssh-add -D não estava funcionando para mim por algum motivo. Estou selecionando a resposta mais útil, obrigado.

    
por gerky 26.05.2015 / 16:16

2 respostas

7

A porta 9814 é onde está o git-daemon (por exemplo, clone, git clone git://git.example.com/repo ). Isso é destinado a um repositório git interno. Leia a documentação para obter mais detalhes.

Você tem duas outras opções para configurar um servidor git remoto:

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

O SSH é muito mais fácil de configurar. Você só precisa garantir que todos os colaboradores tenham acesso à conta do SSH. Isso normalmente é feito por meio de chaves SSH - cada desenvolvedor adiciona sua chave pública a uma conta git SSH.

Lembre-se:

  • Especifique o protocolo no seu comando (por exemplo, ssh , git , http ou https ).
  • Verifique se você tem a configuração do firewall corretamente:
    • Geralmente, a porta 22 para ssh
    • Normalmente, a porta 443 para https
    • Os outros dois devem ser evitados, mas, para ref, a porta 9814 para git e a porta 80 para http
por 02.06.2015 / 16:22
1

Você parece estar sob a suposição de que o git-daemon é responsável. Você confirmou que o git-daemon está, de fato, rodando no sistema? Verifique a lista de processos, bem como a lista de portas abertas:

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

Se o git-daemon não estiver rodando e não houver nada escutando na porta 9814, é possível que exista algo diferente - talvez o novo usuário git que você adicionou não tenha uma senha configurada ou a configuração SSH esteja usando o Kerberos e você tem um tíquete de serviço válido existente.

HTTP e SSH são apenas dois dos seis protocolos que o git suporta. Eu acredito que o git só usa SSH com URLs do formulário usuário @ host, então eu tenho certeza que é um problema de autenticação com seu usuário git.

Quando você clona o repositório, observe o log de autenticação em seu sistema (normalmente /var/log/auth.log ou / var / log / secure). Se você ver logins SSH para o usuário git durante a operação clone, então é quase certo que esteja usando o SSH e não o git-daemon.

    
por 02.06.2015 / 20:10