Quels sont les avantages et les inconvénients de SSH et HTTP pour un serveur git?

24

Je veux configurer un serveur git. J'ai trouvé plusieurs tutoriels bien détaillés.

Certains décrivent l'installation d'un git-server accessible via Ssh, tandis que d'autres, accessibles via HTTP. (D'autres conseillent même des outils comme la gitolite).

Y a-t-il des avantages ou des inconvénients à choisir SSH ou HTTP? Il semble que par HTTP, le transfert de fichiers est beaucoup plus lent, mais je me demande s'il y a d'autres choses à garder à l'esprit.

Quelle est la manière la plus courante de configurer un serveur git, le cas échéant?

Stéphane Rolland
la source

Réponses:

23

Pendant que vous demandez quel est le moyen le plus courant, je pense qu'il vaut mieux examiner votre situation et se rappeler qu'un protocole n'en exclut pas un autre - ajoutez plus de protocole d'accès plus tard si vous en avez besoin.

  • Le plus efficace et le plus rapide consiste à utiliser le démon Git natif. Cependant, peu de fonctionnalités offertes: pas de cryptage, pas d'authentification. Idéal pour les miroirs publics en lecture seule de vos référentiels. Si vous avez besoin de performances, envisagez également d'installer une version récente plutôt que la version fournie avec votre système d'exploitation.

  • Le moyen le plus compatible est HTTP. Moins efficace que Git natif, mais pas beaucoup de différence non plus. Le pro le plus important de HTTP est la pénétration du pare-feu et le support du proxy. Il apparaît comme un autre trafic HTTP régulier pour la plupart des passerelles / pare-feu.

  • Le HTTPS est plus sûr , mais inévitablement moins efficace aussi. Nécessite pas mal de configuration. Vous aurez également besoin d'un certificat TLS de confiance.

  • Sécurité similaire, mais une manière plus courante consiste à utiliser SSH. C'est la valeur par défaut si aucun protocole n'est spécifié sur la ligne de commande. Propulsé par SSH, il fournit un cryptage solide et une authentification par mot de passe et clé. Bien que non conventionnel, il est également possible d'autoriser l'accès anonyme de cette manière.

Mon conseil serait en fonction du cas d'utilisation de vos référentiels:

  • référentiels privés et petit groupe d'utilisateurs: SSH

  • référentiels publics, n'importe quel nombre de clones, mais petit groupe d'utilisateurs privilégiés push: HTTP et Git (fetch-only) + SSH (+ push-access)

  • l'un des éléments ci-dessus, mais avec une grande quantité d'utilisateurs privilégiés: vous ne comprenez probablement pas la philosophie de Git.

Certains réseaux publics ou d'entreprise peuvent bloquer le trafic Git et SSH. Si vous avez vraiment besoin d'accéder à vos référentiels de n'importe où , envisagez d'utiliser à la fois HTTPS et SSH.

gertvdijk
la source
Vous pouvez obtenir gratuitement des certificats TLS pour HTTPS sur startssl.com. Approuvé par tous les principaux OS / navigateurs.
WhyNotHugo
2
Ou letsencrypt.org
Tereza Tomcova
2

Vous pouvez utiliser HTTPS pour un accès en lecture seule, si vos référentiels sont publics car ils sont faciles à utiliser côté client. Sinon, vous ne devez utiliser que SSH. Dans tous les cas, vous devez utiliser SSH pour l'accès en écriture car il a une meilleure gestion de l'authentification.

Christopher Perrin
la source
oh, il est donc possible de mélanger les deux? SSH pour l'accès en écriture et en lecture et Https pour un accès en lecture seule facile?
Stephane Rolland
Oui, ça l'est. Ce ne devrait pas être un gros problème.
Christopher Perrin