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.
É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?
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
Vérifiez que vous démarrez l'agent SSH chaque fois que vous exécutez GitBash:
$ cat ~/.bashrc
start_agent
, cette étape est déjà terminée.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
.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 ......"
ssh-rsa
et le bit de fin == [email protected]
)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:
Global Public Key
pour le libelléUne entrée Global Public Key
devrait maintenant être visible dans votre liste de clés.
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
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
_
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:
Ensuite:
Images from " Intégration de Mercurial/BitBucket au logiciel JetBrains "
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
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>
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.
Deux petites clarifications qui pourraient sauver quelqu'un de la confusion que j'ai traversée:
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.
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
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.
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
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.
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
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.
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 :)
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
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
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.
Juste essayer
git remote add Origin <HTTP URL>
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.
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