Git supporte quatre protocoles de transport : HTTPS, SSH, Git et Local. Dans la pratique, vous choisirez entre HTTPS et SSH. Ce guide explique chaque protocole, ses avantages et ses limites, pour que vous fassiez le bon choix.
Prérequis : Remotes fondamentaux.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Comprendre les 4 protocoles Git : local, SSH, HTTP/HTTPS et Git
- Distinguer HTTPS et SSH pour choisir selon votre environnement
- Évaluer les implications de sécurité et de performance de chaque protocole
- Configurer le protocole adapté sur GitHub, GitLab ou un serveur interne
Les quatre protocoles
Section intitulée « Les quatre protocoles »| Protocole | URL type | Port | Authentification |
|---|---|---|---|
| HTTPS | https://github.com/user/repo.git | 443 | Token / mot de passe |
| SSH | git@github.com:user/repo.git | 22 | Clé SSH |
| Git | git://github.com/user/repo.git | 9418 | Aucune |
| Local | /srv/git/repo.git | — | Système de fichiers |
1. HTTPS (Smart HTTP)
Section intitulée « 1. HTTPS (Smart HTTP) »Le protocole le plus courant. Depuis Git 1.6.6, Git utilise le Smart HTTP qui négocie le transfert de manière intelligente (comme SSH).
git clone https://github.com/user/project.gitAuthentification
Section intitulée « Authentification »Depuis 2021, GitHub (et d’autres plateformes) n’acceptent plus les mots de passe en HTTPS. Vous devez utiliser un Personal Access Token (PAT) :
# Git demandera vos identifiants — utilisez le PAT comme mot de passegit push origin mainUsername: votre-usernamePassword: ghp_xxxxxxxxxxxx # le PAT, pas votre mot de passePour éviter de retaper le token à chaque fois, configurez un credential helper :
# Cache en mémoire (15 min par défaut)git config --global credential.helper cache
# Cache avec durée personnalisée (1h)git config --global credential.helper 'cache --timeout=3600'
# Stockage sur disque (attention : en clair)git config --global credential.helper store
# Git Credential Manager (recommandé sur Windows/macOS)git config --global credential.helper managerAvantages et inconvénients
Section intitulée « Avantages et inconvénients »| Avantage | Inconvénient |
|---|---|
| Fonctionne partout (pare-feux, proxies) | Token à gérer |
| Pas de configuration côté serveur | Moins pratique que SSH pour le quotidien |
| Authentification par URL possible | Credential helper nécessaire |
Le protocole préféré des développeurs pour le quotidien. Une fois la clé configurée, aucune saisie de mot de passe.
git clone git@github.com:user/project.gitConfiguration
Section intitulée « Configuration »-
Générez une clé SSH (si vous n’en avez pas) :
Fenêtre de terminal ssh-keygen -t ed25519 -C "votre@email.com"Préférez ed25519 (plus court, plus sûr) à RSA.
-
Ajoutez la clé à l’agent SSH :
Fenêtre de terminal eval "$(ssh-agent -s)"ssh-add ~/.ssh/id_ed25519 -
Copiez la clé publique :
Fenêtre de terminal cat ~/.ssh/id_ed25519.pub -
Ajoutez-la sur GitHub (Settings → SSH and GPG keys) ou GitLab (Preferences → SSH Keys)
-
Testez la connexion :
Fenêtre de terminal ssh -T git@github.comHi username! You've successfully authenticated, but GitHub does not provide shell access.
Avantages et inconvénients
Section intitulée « Avantages et inconvénients »| Avantage | Inconvénient |
|---|---|
| Pas de mot de passe après configuration | Configuration initiale requise |
| Sûr (chiffrement asymétrique) | Bloqué par certains pare-feux (port 22) |
| Rapide pour les push/pull quotidiens | Clé privée à protéger |
3. Protocole Git (git://)
Section intitulée « 3. Protocole Git (git://) »Un protocole léger, sans authentification ni chiffrement. Il écoute sur le port 9418.
git clone git://github.com/user/project.gitCaractéristiques
Section intitulée « Caractéristiques »- Le plus rapide pour le transfert (pas de surcharge SSL/SSH)
- Aucune authentification : lecture seule uniquement
- Pas de chiffrement : les données transitent en clair
- Utilisé principalement pour les miroirs de dépôts publics en lecture
4. Protocole Local
Section intitulée « 4. Protocole Local »Git peut travailler directement sur le système de fichiers :
# Chemin absolugit clone /srv/git/project.git
# Avec le préfixe file://git clone file:///srv/git/project.gitLa différence : sans file://, Git utilise des hardlinks et copies
directes (plus rapide). Avec file://, Git utilise le transport
réseau (plus lent mais plus propre pour un transfert minimal).
Cas d’usage
Section intitulée « Cas d’usage »- Dépôts sur un NFS ou partage réseau monté
- Tests locaux : simuler un remote avec un bare repository
- Sauvegardes sur un autre disque
Comparatif
Section intitulée « Comparatif »| Critère | HTTPS | SSH | Git | Local |
|---|---|---|---|---|
| Sécurité | TLS | Chiffrement asymétrique | Aucune | Système de fichiers |
| Authentification | Token/PAT | Clé SSH | Non | Permissions FS |
| Pare-feu | Passe partout (443) | Parfois bloqué (22) | Souvent bloqué (9418) | N/A |
| Performance | Bonne | Bonne | Meilleure | Meilleure |
| Écriture (push) | Oui | Oui | Non (lecture seule) | Oui |
| Configuration | Faible | Moyenne | Côté serveur | Aucune |
Quel protocole choisir ?
Section intitulée « Quel protocole choisir ? »| Situation | Protocole recommandé |
|---|---|
| Développeur quotidien | SSH (confort + sécurité) |
| CI/CD, scripts automatisés | HTTPS avec token (pas d’agent SSH) |
| Derrière un proxy/pare-feu strict | HTTPS (port 443) |
| Miroir public en lecture | HTTPS (Git protocol déprécié) |
| Tests locaux / bare repos | Local |
Dépannage : problèmes courants
Section intitulée « Dépannage : problèmes courants »| Symptôme | Cause probable | Solution |
|---|---|---|
Permission denied (publickey) | Clé SSH non configurée ou non ajoutée | ssh-add, vérifiez la clé sur la plateforme |
fatal: Authentication failed | Token expiré ou mauvais | Régénérez le PAT sur la plateforme |
Connection refused (port 22) | Pare-feu bloque SSH | Utilisez HTTPS ou SSH sur le port 443 |
SSL certificate problem | Certificat auto-signé | git config http.sslVerify false (temporaire) ou ajoutez le CA |
À retenir
Section intitulée « À retenir »- HTTPS : fonctionne partout, token requis, idéal pour la CI/CD
- SSH : confort au quotidien, clé à configurer une fois, préférez ed25519
- Le protocole Git (
git://) est déprécié — pas d’authentification ni de chiffrement - Local : pour les tests et les bare repos sur le système de fichiers
- La plupart des développeurs utilisent SSH pour le quotidien et HTTPS pour la CI/CD