web-dev-qa-db-fra.com

Impossible de transférer dans le référentiel 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 en sorte que Git fonctionne. Après avoir fait un commit, je devais ajouter mon email et mon nom aux globals, mais ensuite ça s'est bien passé.

Quand 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 perdu ici. Mon ami avec qui je partage ce référentiel y a très bien accédé, mais je n'arrive pas à le faire fonctionner.

133
Jason Dahl

Écrivez ceci pour ceux qui débutent avec Git et BitBucket sous Windows et qui ne sont pas aussi familiers avec Bash (puisqu'il s'agit à la fois d'un problème courant et d'un résultat élevé de Google lors de la recherche du message d'erreur dans la question).

Pour ceux qui ne se soucient pas de HTTPS et qui recherchent une solution rapide, faites défiler jusqu'au bas de cette réponse pour obtenir les instructions sous POUR LE LAZY

Pour ceux qui cherchent à résoudre le problème, suivez les instructions ci-dessous:

Résoudre le problème SSH aussi vite que possible

Ceci est un ensemble d’instructions dérivé de l’URL liée à VonC. Il a été modifié pour être aussi résilient et concis que possible.

  • Ne tapez pas le $ ni les lignes ne commençant pas par $ (le $ signifie que vous écrivez quelque chose dans GitBash).

  • Ouvrez GitBash

Définissez vos informations globales si vous ne l'avez pas déjà fait:

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

Recherchez OpenSSH:

$ ssh -v localhost
OpenSSH_4.6p1, OpenSSL...

Voir quelque chose comme ça?

  • Oui: continue.
  • Non: passez à la section POUR LE LAZY ou suivez l’article de VonC lié à celui-ci.

Voyez si vous avez déjà généré les clés:

$ ls -a ~/.ssh/id_*

S'il y a deux fichiers, vous pouvez ignorer l'étape suivante.

$ ssh-keygen

Tout laisser comme valeurs par défaut, entrez une phrase secrète. Vous devriez maintenant voir les résultats avec cette commande:

$ ls -a ~/.ssh/id_*

Recherchez un fichier de configuration existant:

$ ls -a ~/.ssh/config

Si vous obtenez un résultat, recherchez dans ce fichier des informations erronées. Si aucun fichier n'existe, procédez comme suit:

$ echo "Host bitbucket.org" >> ~/.ssh/config
$ echo " IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config

Confirmez le contenu:

$ cat ~/.ssh/config

Host bitbucket.org
 IdentityFile ~/.ssh/id_rsa
  • L'espace unique précédant "IdentityFile" est requis.

Vérifiez que vous démarrez l'agent SSH chaque fois que vous exécutez GitBash:

$ cat ~/.bashrc
  • Si vous voyez une fonction appelée start_agent, cette étape est déjà terminée.
  • Si aucun fichier, continue.
  • Si un fichier ne contient pas cette fonction, vous vous trouvez dans une situation délicate. Il est probablement prudent d'y ajouter (en utilisant les instructions ci-dessous), mais ce n'est peut-être pas le cas! En cas de doute, effectuez une sauvegarde de votre fichier .bashrc avant de suivre les instructions ci-dessous ou passez directement à la section FOR THE LAZY .

Entrez ce qui suit dans GitBash pour créer votre fichier .bashrc:

$ echo "SSH_ENV=$HOME/.ssh/environment" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "# start the ssh-agent" >> ~/.bashrc
$ echo "function start_agent {" >> ~/.bashrc
$ echo "    echo \"Initializing new SSH agent...\"" >> ~/.bashrc
$ echo "    # spawn ssh-agent" >> ~/.bashrc
$ echo "    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo "    echo succeeded" >> ~/.bashrc
$ echo "    chmod 600 \"\${SSH_ENV}\"" >> ~/.bashrc
$ echo "    . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo "    /usr/bin/ssh-add" >> ~/.bashrc
$ echo "}" >> ~/.bashrc
$ echo "" >> ~/.bashrc
$ echo "if [ -f \"\${SSH_ENV}\" ]; then" >> ~/.bashrc
$ echo "     . \"\${SSH_ENV}\" > /dev/null" >> ~/.bashrc
$ echo "     ps -ef | grep \${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {" >> ~/.bashrc
$ echo "        start_agent;" >> ~/.bashrc
$ echo "    }" >> ~/.bashrc
$ echo "else" >> ~/.bashrc
$ echo "    start_agent;" >> ~/.bashrc
$ echo "fi" >> ~/.bashrc

Vérifiez que le fichier a été créé avec succès (le vôtre ne devrait différer que lorsque "votre nom d'utilisateur" apparaît):

$ cat ~/.bashrc
SSH_ENV=/c/Users/yourusername/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi
  • Fermez GitBash et rouvrez-le.
  • Vous devez vous demander votre phrase secrète (pour le fichier SSH que vous avez généré précédemment).
  • S'il n'y a pas d'invite, vous n'avez pas défini de phrase secrète ou GitBash n'exécute pas le script .bashrc (ce qui serait étrange, envisagez donc d'en réviser le contenu!). Si vous exécutez cette opération sur un Mac (OS X), .bashrc n'est pas exécuté par défaut - .bash_profile est. Pour résoudre ce problème, placez cet extrait dans votre .bash_profile: [[ -s ~/.bashrc ]] && source ~/.bashrc

Si vous n'aviez pas saisi de phrase secrète, vous auriez vu quelque chose comme ceci lors du démarrage de GitBash:

Initializing new SSH agent...
succeeded
Identity added: /c/Users/yourusername/.ssh/id_rsa (/c/Users/yourusername/.ssh/id_rsa)

Et les éléments suivants devraient renvoyer des résultats:

$ ssh-add -l

Cependant, si vous obtenez ce qui suit de ssh-add -l:

Could not open a connection to your authentication agent.

Cela n'a pas engendré l'agent SSH et votre .bashrc en est probablement la cause.

Si, au démarrage de GitBash, vous voyez ceci:

Initializing new SSH agent...
sh.exe": : No such file or directory

Cela signifie que vous avez oublié d'échapper le $ avec un\lors de l'écho au fichier (c'est-à-dire que les variables ont été développées). Recréez votre .bashrc pour résoudre ce problème.

Vérifiez que l'agent est en cours d'exécution et que vos clés ont été ajoutées:

$ ssh-add -l

Devrait renvoyer quelque chose de semblable à ceci:

2048 0f:37:21:af:1b:31:d5:cd:65:58:b2:68:4a:ba:a2:46 /Users/yourusername/.ssh/id_rsa (RSA)

Exécutez la commande suivante pour obtenir votre clé publique:

$ cat ~/.ssh/id_rsa.pub

(il devrait retourner quelque chose commençant par "ssh-rsa ......"

  • Cliquez sur l'icône de la fenêtre GitBash
  • Cliquez sur Modifier
  • Cliquez sur Marquer
  • Mettez en surbrillance la clé publique avec votre souris (y compris le bit de tête ssh-rsa et le bit de fin == [email protected])
  • Faites un clic droit sur la fenêtre (effectue une copie)
  • Collez votre clé publique dans le Bloc-notes.
  • Supprimez toutes les nouvelles lignes de sorte qu'il ne s'agisse que d'une seule ligne.
  • Appuyez sur CTRL+A puis sur CTRL+C pour copier à nouveau la clé publique dans votre presse-papiers.

Configurez votre clé privée avec BitBucket en procédant comme suit:

  • Ouvrez votre navigateur et accédez au site BitBucket.org
  • Connectez-vous à BitBucket.org
  • Cliquez sur votre avatar (en haut à droite)
  • Cliquez sur Gérer le compte
  • Cliquez sur SSH Keys (sous Security dans le menu de gauche).
  • Cliquez sur Ajouter une clé
  • Entrez Global Public Key pour le libellé
  • Collez la clé publique que vous avez copiée à partir du Bloc-notes

Une entrée Global Public Key devrait maintenant être visible dans votre liste de clés.

  • Retourner à GitBash
  • cd dans le répertoire contenant votre projet
  • Changez votre origine en variation SSH (ce ne sera pas le cas si vous avez exécuté les étapes FOR THE LAZY )

Vérifiez vos télécommandes:

$ git remote -v

Basculez vers l'URL SSH:

$ git remote set-url Origin [email protected]:youraccount/yourproject.git

Vérifiez que tout est en ordre de marche:

$ git remote show Origin

Vous devriez voir quelque chose comme ça:

Warning: Permanently added the RSA Host key for IP address '...' to the list of known hosts.
* remote Origin
  Fetch URL: [email protected]:youruser/yourproject.git
  Push  URL: [email protected]:youruser/yourproject.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git Push':
    master pushes to master (fast-forwardable)

FAIT!

Vous pouvez choisir d'utiliser HTTPS au lieu de SSH. Vous devrez taper votre mot de passe lors d'opérations distantes (il est temporairement mis en cache après l'avoir tapé une fois). Voici comment vous pouvez configurer HTTPS:

POUR LE LAZY

Vous devriez résoudre le problème SSH comme décrit par VonC; Cependant, si vous êtes pressé de vous engager et que vous n'avez pas les outils/heure/connaissances pour générer une nouvelle clé publique maintenant , définissez votre origine sur l'alternative HTTPS:

> https://[email protected]/accountname/reponame.git

Utilisation d'un outil graphique tel que TortoiseGit ou outils de ligne de commande .

Voici la documentation de cette URL d'origine alternative.

Ligne de commande pour ajouter une origine s'il n'en existe pas:

git remote add Origin https://[email protected]/accountname/reponame.git

Ligne de commande pour modifier une origine existante:

git remote set-url Origin https://[email protected]/accountname/reponame.git

REMARQUE: votre nom de compte n'est pas votre adresse électronique.

Vous pouvez également vouloir définir vos informations globales:

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

Puis essayez à nouveau votre Push (plus besoin de vous engager)

git Push Origin master
220
Graeme Wicksted

Cette erreur se produit également si vous avez oublié d'ajouter la clé privée à ssh-agent . Faites ceci avec:

_ssh-add ~/.ssh/id_rsa
_
56
Matthias Braun

Reformaté signifie que vous avez probablement supprimé vos clés ssh publiques et privées (dans ~/.ssh).

Vous devez les régénérer et publier votre clé publique ssh sur votre profil BitBucket, comme indiqué dans " tiliser le protocole SSH avec Bitbucket ", à la suite de " configurer SSH pour Git avec GitBash = ".

Comptes-> Gérer les comptes-> Clés SSH:

http://solvedproblems.hydex11.net/_media/solved-problems/crazy-problems/bitbucket_manage_account.png

Ensuite:

http://solvedproblems.hydex11.net/_media/solved-problems/crazy-problems/bitbucket_add_ssh.png

Images from " Intégration de Mercurial/BitBucket au logiciel JetBrains "

25
VonC

J'ai résolu ce problème en supprimant la télécommande à l'aide de la commande suivante:

git remote remove Origin

et ensuite essayé d'ajouter à distance en utilisant https url au lieu de ssh

git remote add Origin httpsUrl

Il demande des informations d'identification github. Entrez les informations d'identification, puis essayez de pousser à git en utilisant:

git Push Origin master
17
Ankit Arora

Juste besoin d'un fichier de configuration sous le répertoire ~/.ssh
ref: https://confluence.atlassian.com/bitbucket/set-up-ssh-for-git-728138079.html
ajoute la configuration ci-dessous dans le fichier de configuration

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

J'ai eu le même problème. Mes clés SSH ont été définies correctement. J'ai résolu ce problème comme ceci.

Après avoir créé un nouveau projet dans Bitbucket, utilisez clone. Entrez la commande de clonage dans le terminal et il devrait cloner le projet vide sur votre ordinateur. Après cela, vous pouvez copier vos fichiers dans ce répertoire et commencer à valider et à transmettre à bitbucket.

3
Rafael

Deux petites clarifications qui pourraient sauver quelqu'un de la confusion que j'ai traversée:

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

Lors de la connexion via https, vous utilisez

https://[email protected]/owner-account/repo-name.git

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

ssh://[email protected]/owner-account/repo-name.git

Si vous essayez de vous connecter à SSH avec le nom de votre compte devant, l'erreur générée par l'affiche originale sera générée. Voici comment vous pouvez faire le test de connexion à git @, puis essayer par erreur avec votre nom d'utilisateur et voir une erreur.

2 - Les clés SSH via les comptes d'équipe seront obsolètes en 2017

Si vous configurez des clés SSH sur des comptes d’équipe, ils vous recommandent de les basculer vers des comptes personnels. Un conseil utile pour éviter e

2
Paulo

Si vous utilisez SourceTree (j'utilise 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, accédez à 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-papier.
  4. Une fois que vous avez copié cela, allez à Bitbucket dans votre navigateur. Allez dans [avatar] -> Paramètres Bitbucket.
  5. Aller aux clés SSH.
  6. Cliquez sur Ajouter une clé
  7. Collez dans la clé que vous avez copiée.

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

Pour référence, sous macOS, à l'aide de 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é: tilisez le protocole SSH avec Bitbucket Cloud

1
Sarah

J'ai eu cette erreur

Connexion à bitbucket.org fermée par l'hôte distant. fatal: Impossible de lire à partir du référentiel distant. Assurez-vous d'avoir les droits d'accès corrects.

Puis j'ai essayé

git config --global user.email "[email protected]"

travaillé sans guillemets.

0

Cela est probablement dû à la présence de plusieurs clés SSH dans l'agent SSH (et/ou BitBucket). Vérifier documentation Atlassian pour la solution de contournement

0
warden

Pour les erreurs:

[erreur] accès au référentiel refusé. l'accès via une clé de déploiement est en lecture seule. fatal: impossible de lire à partir du référentiel distant. Assurez-vous que vous disposez des droits d'accès appropriés et que le référentiel existe.

[erreur] fatal: impossible de lire à partir du référentiel distant.

[erreur] fatal: impossible de trouver l'aide distante pour 'https'

J'ai résolu en suivant ces étapes:

Installez d'abord ces dépendances:

$ yum install expat expat-devel openssl openssl-devel

Puis retirez git:

$ yum remove git git-all

Maintenant, construisez et installez Git sur la dernière version, dans ce cas:

$ wget https://github.com/git/git/archive/v2.13.0.tar.gz
$ tar zxf v.2.13.0.tar.gz
$ cd git-2.13.0/

Puis pour le configure:

$ make configure
$ ./configure --with-expat --with-openssl

Et enfin installer comme ça:

$ make 
$ make install install-doc install-html install-info

ça y est, configurez maintenant votre repo avec https:

$ git remote add Origin https://github.com/*user*/*repo*.git
# Verify new remote
$ git remote -v

si vous avez configuré une clé SSH sur votre serveur distant, vous devez la supprimer.

0
Johan Morales

Procédez comme dans le didacticiel Atlassian et assurez-vous que la clé privée est collée dans le profil, pas dans le référentiel :)

0
Hector

J'ai trouvé que la ligne de commande git n'imaginait pas que mes clés générées par le concours (Windows 10).

Voir ma réponse sur Serverfault

0
HostMyBus

Cette erreur apparaît également lorsque le référentiel n'existe pas. J'ai essayé toutes les réponses jusqu'à ce que j'ai vu le tiret manquer d'un nom

0
Mirko

J'utilise macOS et même si j'avais configuré ma clé publique dans bitbucket la prochaine fois que j'essayais de pousser je me suis

accès au référentiel refusé.

fatal: Impossible de lire à partir du référentiel distant.

Assurez-vous que vous disposez des droits d'accès appropriés et que le référentiel existe.

Ce que je devais faire était Étape 2. Ajoutez la clé à ssh-agent comme décrit dans Guide d'installation des clés Bitbucket SSH et surtout la 3ème étape:

(macOS uniquement) Pour que votre ordinateur garde en mémoire votre mot de passe à chaque redémarrage, ouvrez (ou créez) le fichier ~/.ssh/config et ajoutez ces lignes au fichier:

Hôte *
UseKeychain yes

J'espère que cela aidera un utilisateur mac avec le même problème.

0
sstauross

Juste essayer

git remote add Origin <HTTP URL>
0
Ashok Joshi

J'ai eu cette même erreur pour un référentiel - tout à coup, tous les autres étaient et fonctionnent toujours bien lorsque j'essaie de Push commits. Le problème semblait être lié à la clé SSH (comme vous le savez déjà dans les commentaires précédents) - sur le bitbucket, accédez à View Profile, puis cliquez sur Manage Account.

Sur le côté gauche, cliquez sur le SSH Keys puis ajoutez celui que vous avez sur votre système sous le répertoire ~/.ssh /.

Si vous n'en avez pas encore généré - utilisez les instructions de l'une des publications, mais assurez-vous d'utiliser soit le fichier id_dsa.pub par défaut, soit un fichier personnalisé, avec plus tard le choix de l'option -i avec le chemin. à la clé lorsque vous vous connectez à savoir.

ssh -i ~/.ssh/customkeyname username@ip_address

Une fois que vous avez ajouté votre clé locale à votre compte sur bitbucket, vous pourrez commencer à interagir avec votre référentiel.

0
Sebastian Sulinski

J'ai trouvé que la solution qui fonctionnait le mieux pour moi était de diviser la Push en morceaux plus petits.

et supprimer les gros fichiers d’image d’écran (10 Mo +) des commits

La sécurité n'était pas un problème à la fin plus plus sur les limites des fichiers bin

0
Harry Bosh