Je sais, je réponds très tard et même StackOverflow a confirmé si je voulais vraiment répondre. Je réponds parce que personne n'a vraiment décrit le problème réel et voulait donc partager le même.
Les bases
Tout d'abord, comprenez que c'est la télécommande ici. Remote est GitLab et votre système est le local, donc lorsque nous parlons de la télécommande origin
, quelle que soit l'URL définie dans votre git remote -v
sortie, c'est votre URL distante.
Les protocoles
Fondamentalement, Git clone / push / pull fonctionne principalement sur deux protocoles différents (il y en a d'autres également) -
- Protocole HTTP
- Protocole SSH
Lorsque vous clonez un dépôt (ou modifiez l'URL distante) et utilisez l'URL HTTP comme https://gitlab.com/wizpanda/backend-app.git il utilise le premier protocole, à savoir le protocole HTTP.
Alors que si vous clonez le dépôt (ou modifiez l'URL distante) et utilisez l'URL comme git@gitlab.com:wizpanda/backend-app.git
il utilise le protocole SSH.
Protocole HTTP
Dans ce protocole, chaque opération à distance, c'est-à-dire cloner, pousser et tirer, utilise l'authentification simple, c'est-à-dire le nom d'utilisateur et le mot de passe de votre télécommande (GitLab dans ce cas), ce qui signifie que pour chaque opération, vous devez saisir votre nom d'utilisateur et votre mot de passe, ce qui peut être fastidieux. .
Ainsi, lorsque vous appuyez / tirez / clonez, GitLab / GitHub vous authentifie avec votre nom d'utilisateur et votre mot de passe et vous permet de faire l'opération.
Si vous souhaitez essayer ceci, vous pouvez passer à l'URL HTTP en exécutant la commande git remote set-url origin <http-git-url>
.
Pour éviter ce cas, vous pouvez utiliser le protocole SSH.
Protocole SSH
Une simple connexion SSH fonctionne sur des paires de clés publiques-privées. Donc, dans votre cas, GitLab ne peut pas vous authentifier car vous utilisez l'URL SSH pour communiquer. Maintenant, GitLab doit vous connaître d'une manière ou d'une autre. Pour cela, vous devez créer une paire de clés publique-privée et donner la clé publique à GitLab.
Désormais, lorsque vous poussez / tirez / clonez avec GitLab, GIT (SSH en interne) proposera par défaut votre clé privée à GitLab et confirmera votre identité, puis GitLab vous permettra d'effectuer l'opération.
Je ne répéterai donc pas les étapes déjà données par Muhammad, je les répéterai théoriquement.
- Générer une paire de clés `ssh-keygen -t rsa -b 2048 -C" Ma clé SSH commune "
- La paire de clés générée sera par défaut
~/.ssh
nommée id_rsa.pub
(clé publique) & id_rsa
(clé privée).
- Vous stockerez la clé publique dans votre compte GitLab (la même clé peut être utilisée dans plusieurs ou n'importe quel serveur / comptes).
- Lorsque vous clonez / poussez / tirez, GIT propose votre clé privée.
- GitLab fait correspondre la clé privée avec votre clé publique et vous permet d'effectuer.
Conseils
Vous devez toujours créer une clé rsa forte d'au moins 2048 octets. Donc, la commande peut être ssh-keygen -t rsa -b 2048
.
https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
Pensée générale
Les deux approches ont leurs avantages et leurs inconvénients. Après avoir tapé le texte ci-dessus, je suis allé chercher plus à ce sujet parce que je n'ai jamais lu quelque chose à ce sujet.
J'ai trouvé ce document officiel https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols qui en dit plus à ce sujet. Ce que je veux dire ici, c'est qu'en lisant l'erreur et en réfléchissant à l'erreur, vous pouvez faire votre propre théorie ou compréhension, puis correspondre à certains résultats de Google pour résoudre le problème :)
ssh -vvvv git@gitlab.com
pour voir s'il récupère la clé SSH