9 votes

Comment mettre en place un dépôt Git sécurisé ?

J'ai suivi ce tutoriel pour mettre en place un dépôt git sur une instance EC2. http://git-scm.com/book/ch4-4.html . En fait, j'ajoute un nouveau git et inclure ma clé publique dans authorized_keys. Après avoir configuré le git je me contente d'initialiser un nouveau repo par git init --bare .

Cependant, j'ai remarqué que je pouvais le cloner facilement sans avoir besoin de ma clé privée. Existe-t-il un moyen de le forcer à n'être disponible que via SSH afin que authorized_keys soit suivi ? Je suppose qu'il utilise le port 9418 par défaut de git qui ne semble pas supporter l'authentification.

11voto

Mikael Points 13

Le port 9814 est l'endroit où git-daemon (par exemple, clone, git clone git://git.example.com/repo ). Il s'agit d'un git dépôt. Lire la documentation pour plus de détails.

Vous avez deux autres options pour configurer une télécommande git serveur :

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

SSH est beaucoup plus facile à mettre en place. Il suffit de s'assurer que tous les contributeurs ont accès au compte SSH. Cela se fait normalement via les clés SSH - chaque développeur ajoute sa clé publique à un fichier git Compte SSH.

N'oubliez pas :

  • Spécifiez le protocole dans votre commande (c'est-à-dire, ssh , git , http o https ).
  • Assurez-vous que votre pare-feu est correctement configuré :
    • Habituellement, le port 22 pour les ssh
    • Habituellement, le port 443 pour les https
    • Les deux autres doivent être évités mais, par exemple, le port 9814 pour le git et le port 80 pour http

1voto

flowen Points 143

Vous semblez supposer que c'est git-daemon qui est responsable. Avez-vous confirmé que git-daemon est bien en cours d'exécution sur le système ? Vérifiez la liste des processus ainsi que la liste des ports ouverts :

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

Si git-daemon ne fonctionne pas et qu'il n'y a rien à l'écoute sur le port 9814, il est possible que quelque chose d'autre ne fonctionne pas -- peut-être que le nouvel utilisateur git que vous avez ajouté n'a pas de mot de passe défini ou que la configuration SSH utilise Kerberos et que vous avez un ticket de service valide existant.

HTTP et SSH ne sont que deux des quelque six protocoles pris en charge par git. Je crois que git n'utilise jamais SSH qu'avec des URL de la forme user@host, donc je suis presque certain qu'il s'agit d'un problème d'authentification avec votre utilisateur git.

Lorsque vous clonez le repo, regardez le journal d'authentification sur votre système (typiquement /var/log/auth.log ou /var/log/secure). Si vous voyez des connexions SSH pour l'utilisateur git pendant l'opération de clonage, il est presque certain qu'il utilise SSH et non git-daemon.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X