183 votes

Impossible de pousser vers un dépôt Git sur Bitbucket

J'ai créé un nouveau référentiel et je rencontre une erreur étrange. J'ai déjà utilisé Git sur Bitbucket, mais je viens de reformater et maintenant je n'arrive pas à faire fonctionner Git. Après avoir effectué un commit, j'ai dû ajouter mon email et mon nom aux globaux, mais ensuite le commit s'est bien déroulé.

Lorsque j'essaie d'utiliser la commande

git push origin master

ça ne marche pas. Je reçois ce message :

$ git push origin master
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Je suis un peu perdue ici. Mon ami avec qui je partage ce référentiel y a accédé sans problème et y a poussé sans problème, mais je n'arrive pas à le faire fonctionner.

6voto

MatthewShin Points 66

Il suffit d'avoir un fichier de configuration dans le répertoire ~/.ssh.
réf : https://confluence.atlassian.com/bitbucket/set-up-ssh-for-git-728138079.html
ajouter la configuration suivante dans le fichier de configuration

Host bitbucket.org
 IdentityFile ~/.ssh/<privatekeyfile>

3voto

Paulo Points 1545

Deux petites clarifications qui pourraient éviter à quelqu'un la confusion que j'ai vécue :

1 - Les URL de connexion diffèrent pour HTTPS et SSH

Lorsque vous vous connectez via https, vous utilisez

https://your_account_name@bitbucket.org/owner-account/repo-name.git

cependant, lors de la connexion via SSH, le nom de compte est toujours "git"

ssh://git@bitbucket.org/owner-account/repo-name.git

Si vous tentez de vous connecter à SSH avec votre nom de compte devant, vous obtiendrez l'erreur que l'affiche originale a reçue. C'est ainsi que vous pouvez faire le test en vous connectant à git@, puis essayer par erreur avec votre nom d'utilisateur et voir une erreur.

2 - Les clés SSH via les comptes d'équipe ne seront plus utilisées en 2017.

Si vous configurez des clés SSH sur des comptes d'équipe, ils recommandent de les changer pour des comptes personnels. Une astuce utile pour éviter les e

2voto

Jarvis Luong Points 1036

Ce n'est peut-être pas le cas pour tout le monde mais je fais quand même une réponse ici au cas où quelqu'un aurait la même cause. En gros, j'ai deux comptes Bitbucket, chacun ayant deux clés publiques différentes. En exécutant ssh -Tv bitbucket.org J'ai réussi à voir que mon ordinateur portable envoie une clé incorrecte (mais comme les deux clés publiques sont enregistrées dans bitbucket, la clé est toujours approuvée, puis comme la clé est liée à un autre compte qui n'a pas accès au repo que je pousse, le push est rejeté).

J'ai donc suivi ce guide et mon problème a disparu : https://blog.developer.atlassian.com/different-ssh-keys-multiple-bitbucket-accounts/

1voto

Sumi Points 59

Git a modifié certaines de ses instructions de repo - vérifiez que vous avez connecté votre repo local au nuage Git - vérifiez chacune de ces étapes pour voir si vous en avez oublié une.

Documentation Git [https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh] si vous préférez suivre la documentation - elle est beaucoup plus détaillée et vaut la peine d'être lue pour comprendre pourquoi les étapes ci-dessous ont été résumées.

Ma liste de contrôle Git:-

  1. La branche principale a été transformée en branche principale
  2. Si vous avez initialisé votre repo et que vous voulez repartir de zéro, supprimez le suivi de git avec $rm -rf .git qui supprime récursivement git
  3. Vérifiez que vous n'utilisez pas "Apple Git". Tapez which git il devrait dire /usr/local/bin/git - si vous installez git avec Homebrew $brew install git
  4. Configurez votre nom et votre adresse électronique pour les commits (veillez à utiliser l'adresse électronique que vous avez enregistrée sur Github) :

    $git config --global user.name "Your Name" $git config --global user.email "you@example.com"

  • Configurer git pour suivre les changements de casse dans les noms de fichiers :

    $git config --global core.ignorecase false

Si vous avez fait une erreur, vous pouvez mettre à jour le fichier. $ls -a pour localiser le fichier puis $open .gitignore et le modifier, sauvegarder et fermer.

  1. Liez votre local au repo avec une clé SSH. Les clés SSH sont un moyen d'identifier les ordinateurs de confiance, sans utiliser de mots de passe.
    Étapes pour générer une nouvelle clé
  • Générer une nouvelle clé SSH en tapant ssh-keygen -t rsa -C "your_email@example.com" SAUVEGARDER LA CLÉ
  • Il vous sera demandé de choisir un fichier pour enregistrer la clé et une phrase de passe. Appuyez sur Entrée pour les deux étapes, en laissant les deux options vides (nom par défaut et pas de phrase de passe).
  • Ajoutez votre nouvelle clé à l'agent ssh : ssh-add ~/.ssh/id_rsa
  • Ajoutez votre clé SSH à GitHub en vous connectant à Github, en visitant le site suivant Paramètres du compte et en cliquant sur Clés SSH . Cliquez sur Ajouter une clé SSH

Vous pouvez également le trouver en cliquant sur votre image de profil et sur la touche d'édition située sous celle-ci dans le menu de gauche.

  • Copiez votre clé dans le presse-papiers avec la commande terminal : pbcopy < ~/.ssh/id_rsa.pub

  • Dans le Titre mettez quelque chose qui identifie votre machine, comme Le Macbook Air de VOTRE_NOM

  • Dans le Clé champ vient de frapper cmd + V pour coller la clé que vous avez créée plus tôt - n'ajoutez pas ou ne supprimez pas de caractères ou d'espaces à la clé.

  • Cliquez sur Ajouter une clé et vérifiez que tout fonctionne dans le terminal en tapant : ssh -T git@github.com

    Vous devriez voir le message suivant :

    Hi YOUR_NAME! You've successfully authenticated, but GitHub does not provide shell access.

Maintenant que votre machine locale est connectée au cloud, vous pouvez créer un repo en ligne ou sur votre machine locale. Git a changé le nom master pour une branche main. Lors de la liaison des dépôts, il est plus facile d'utiliser la clé HTTPS plutôt que la clé SSH. Bien que vous ayez besoin de SSH pour lier les dépôts initialement pour éviter l'erreur dans la question.

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Suivez les étapes que vous obtenez maintenant sur votre repo - GitHub a ajouté une étape supplémentaire pour créer une branche (au moment de la rédaction Oct 2020).

  • pour créer un nouveau référentiel sur la ligne de commande echo "# testing-with-jest" >> README.md git init git add README.md git commit -m "premier commit git branch -M main git remote add origin - (utilisez l'url HTTPS et non SSH) git push -u origin main

  • pour pousser un dépôt existant à partir de la ligne de commande git remote add origin (utilisez l'url HTTPS et non SSH) git branch -M main git push -u origin main

Si vous vous trompez, vous pouvez toujours recommencer en supprimant l'initialisation du dossier git sur votre machine locale. $rm -rf .git et recommencer à zéro - mais il est utile de vérifier d'abord qu'aucune des étapes ci-dessus n'a été omise et la meilleure source de vérité reste toujours la documentation - même si elle prend plus de temps à lire et à comprendre !

1voto

Sarah Points 672

Si vous utilisez SourceTree (j'utilise la version 2.4.1), j'ai trouvé un moyen plus simple de générer une clé SSH et de l'ajouter à mes paramètres Bitbucket. Cela a résolu le problème pour moi.

  1. Dans SourceTree, allez dans Préférences.
  2. Allez dans l'onglet Comptes et sélectionnez votre compte.
  3. Il devrait y avoir une option pour générer et copier une clé SSH dans le presse-papiers.
  4. Une fois que vous avez copié cela, allez sur Bitbucket dans votre navigateur. Allez dans [avatar] -> Paramètres de Bitbucket.
  5. Allez dans Clés SSH.
  6. Cliquez sur Ajouter une clé
  7. Collez la clé que vous avez copiée.

J'ai reçu un courriel de confirmation de Bitbucket indiquant qu'une clé SSH avait été ajoutée à mon compte.

Pour référence, sur macOS, en utilisant Terminal, vous pouvez utiliser la commande suivante pour voir les clés générées pour votre appareil. C'est là que la clé que vous avez générée est stockée.

ls -la ~/.ssh

Comme d'autres l'ont dit, cette documentation m'a aidé : Utiliser le protocole SSH avec Bitbucket Cloud

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X