web-dev-qa-db-fra.com

Can't Push to bitbucket, autorisation refusée (publickey)

J'essaie de pousser mon projet sur mon bitbucket et de le déranger depuis environ 4 jours, en parcourant d'innombrables problèmes/pages/dépannage/tutoriels. Je suis perdue et très frustrée. Je l'ai déjà fait auparavant, mais sur différents ordinateurs ... en tout cas voici le code/réponse que je reçois

~/dev/sample_app git Push -u Origin --all
The authenticity of Host 'bitbucket.org (131.103.20.168)' can't be established.
RSA key fingerprint is 81:7b:2c:f5:6f:18:2b:7c:4b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? 
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
~/dev/sample_app 

Je suis sur un Mac en cours d'exécution 10.8.4.

Donc un peu de progrès a été fait, au début il n’y avait pas de dossier .ssh, alors j’ai créé de cette façon au début, il n’y avait pas de fichier known_hosts alors j’ai lancé

ssh -T [email protected]

J'ai choisi oui et cela a créé un fichier known_hosts et quand j'ai essayé de pousser à nouveau, j'ai eu:

~/dev/sample_app git Push -u Origin --all
Permission denied (publickey).
fatal: Could not read from remote repository.

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

Mon dossier .ssh est 700 et les clés à l'intérieur sont toutes 600.

41
josephleon

Vous pouvez définir le fichier indicateur IdentityFile dans le fichier ~/.ssh/config comme suit:

Host bitbucket.org
  IdentityFile ~/.ssh/id_rsa

Quand tu cours 

ssh [email protected]

le client ssh vous permet de sélectionner un fichier dans lequel l'identité (clé privée) pour l'authentification RSA ou DSA est lue.

Client SSH à utiliser avec la clé privée donnée (fichier d'identité)

31
cyb0k

Cela pourrait faire reculer les administrateurs système dans l’horreur, mais après avoir souffert de ce problème (Windows), j’ai abandonné le SSH et suis retourné à HTTPS.

Lorsque vous ajoutez le référentiel distant à Git pour la première fois, remplacez la référence SSH '[email protected]...' par l'URL HTTPS 'https://<username>@bitbucket.org'. 

Vous devez taper votre mot de passe à chaque fois mais, particulièrement sous Windows où SSH n'est pas aussi communément disponible qu'avec la famille * nix, je considère cela comme un inconvénient mineur par rapport aux maux de tête de SSH.

14
AJR

Vous utilisez peut-être ssh en tant qu’URL d’origine. Essayez de supprimer le ssh Origin comme si

git remote rm Origin

Ajoutez ensuite une nouvelle origine avec l’URL HTTPS et réessayez.

git remote add Origin https://[email protected]/SOMETHING/SOMETHING.git
git Push -u Origin master

Assurez-vous de coller votre URL à partir de bitbucket en tant qu’origine.

10
Ronny Kibet

Dans mon cas, sur la nouvelle machine Ubuntu 16, il me manquait des fichiers dans le dossier ~/.ssh

  1. Aller au dossier ~/.ssh
  2. Exécutez ssh-keygen et nommez votre fichier i.e. id_rsa
  3. Exécuter cat ~/.ssh/id_rsa.pub | xclip -sel clip
    Si vous manquez xclip juste apt-get install xclip :)
  4. Allez à (dans l'URL, changez USERNAME en votre nom d'utilisateur bitbucket :)) https://bitbucket.org/account/user/USERNAME/ssh-keys/
  5. Cliquez sur Add key et collez la clé dans le presse-papiers.

Magic - ça marche maintenant :)

9
pbaranski

Une solution plus durable consiste à éditer .bashrc (par exemple vi ~/.bashrc) puis à y ajouter la ligne suivante (remplacer le nom de la clé)

ssh-add ~/.ssh/YOUR_KEY

Cela chargera la clé automatiquement lorsque vous démarrez le shell

7
iTech

J'ai rencontré les mêmes problèmes sous Linux (Ubuntu).

Je l'ai résolu en utilisant la configuration dans git

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

Imprimer la clé publique à l'aide de cat et de la clé SSH sur bitbucket.org: 

$ cat ~/.ssh/id_rsa.pub

Ajouter Bitbucket et remonter le référentiel:

git remote add Origin [email protected]:<username>/your repository name.git
git Push -u Origin --all

C'est tout!

4
Rafiqul

Après avoir configuré git avec git config --global user.name "My Name" et git config --global user.email [email protected], j'avais toujours des problèmes avec l'erreur Permission Denied, (publickey). Pour résoudre ce problème, j’ai d’abord généré un nouveau jeton ssh avec

ssh-keygen

et copié avec

pbcopy < ~/.ssh/YOUR_KEY

Après cela, je suis allé sur bitbucket.com pour l'ajouter en tant que nouvelle clé SSH dans mes paramètres. Ensuite, je suis retourné à mon terminal pour ajouter la nouvelle clé avec

ssh-add ~/.ssh/YOUR_KEY.

Le gros problème que je rencontrais, c'est que j'ai raté la commande critique ssh-add [key].

3
keala

Vérifier la clé SSH existante 

ls -al ~/.ssh

Copier la clé SSH

cat ~/.ssh/id_rsa.pub | pbcopy

Ajoutez la clé SSH copiée à "Paramètres Bitbucket", "Sécurité", "Clés SSH".

1
Michael Stokes

J'ai eu un problème similaire avec BitBucket. dans mon cas, cela ne s'est résolu qu'après que j'ai découvert que je devrais retirer Sudo de la commande git clone!

Selon Attlassian :

Vous ne devriez pas utiliser Sudo lorsque vous clonez, poussez ou tirez parce que ssh-agent s'exécute au niveau utilisateur, pas au niveau racine.

1
Iman Sedighi

Cela peut paraître évident, mais j'ai passé pas mal de temps dessus.

Vérifier la destination lors de l'exécution de git remote -v

Dans mon cas, les clés ssh étaient parfaitement configurées, mais le résultat de cette commande était:

Origin [email protected]:USERNAME/REPOSITORY.git

(notez legetnotgit)

et pas 

Origin [email protected]:USERNAME/REPOSITORY.git

Encore une fois, c’était un cas très particulier, mais assurez-vous de vérifier soigneusement les chaînes de ce système si vous rencontrez des problèmes.

Vous pouvez résoudre ce problème avec les commandes suivantes:

git remote set-url Origin [email protected]:USERNAME/REPOSITORY.git

0
chase

J'ai contourné un problème similaire dans lequel j'avais déjà utilisé HTTPS pour accéder au référentiel et que je devais passer à SSH en définissant l'URL comme suit;

git remote set-url Origin ssh://[email protected]/...
0
McEwin

Sous Windows, @efesaid answer travaillait à la résolution de problèmes liés au test de connexion ssh. En passant, vous pouvez ajouter un -v pour voir quelles clés (par nom) sont tentées et pourquoi la connexion a échoué.

Cependant, lorsque vous passez à bitbucket en utilisant [email protected]: utilisateur/repo.git, il semble que l'hôte ne soit pas précisément bitbucket.org, de sorte que je rencontrais toujours des problèmes d'autorisation refusés. Je les ai résolus en (re) nommant ma clé à id_rsa (c'est le nom de la clé qui a été essayée dans le test ssh). 

Cela fonctionne si vous avez une seule clé RSA. Pour plusieurs clés, peut-être que l'hôte dans le fichier de configuration doit être 

bitbucket.org:username

mais je ne suis pas sûr que ce soit unde

0
Arcanefoam

Je pense que les instructions de bitbucket sont les meilleures. Vérifiez si ssh est installé et si non installez-le

krasen@krasen-Lenovo-Y50-70:~$ ssh -v
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I xxxxx] [-i identity_file]
           [-L [bind_address:]port:Host:hostport] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port]
           [-Q cipher | cipher-auth | mac | kex | key]
           [-R [bind_address:]port:Host:hostport] [-S ctl_path] [-W Host:port]
           [-w local_tun[:remote_tun]] [user@]hostname [command]

krasen@krasen-Lenovo-Y50-70:~$ ls -a ~/.ssh 
.  ..  google_compute_engine  google_compute_engine.pub  identity  identity.pub  known_hosts

krasen@krasen-Lenovo-Y50-70:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/krasen/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/krasen/.ssh/id_rsa.
Your public key has been saved in /home/krasen/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx krasen@krasen-Lenovo-Y50-70
The key's randomart image is:
+--[ RSA 2048]----+
|              .  |
|           xx x  |
|          xxxxx  |
|       xxxxxxxxx |
|      .xxxxxxxx  |
|       xxxxx     |
|     xxxxxxxxxxxx|
|    xxxxxxxxxxxxx|
|     xxxxxxxxxxx |
+-----------------+                                                                                                                                  
krasen@krasen-Lenovo-Y50-70:~$ ls -la ~/.ssh                                                                                                         
total 40
drwx------   2 krasen krasen 4096 Jun 29 14:30 .
drwxr-xr-x 110 krasen krasen 4096 Jun 29 13:00 ..
-rw-------   1 krasen krasen 1675 Mar 18  2015 google_compute_engine
-rw-r--r--   1 krasen krasen  409 Mar 18  2015 google_compute_engine.pub
-rw-------   1 krasen krasen 1679 Jun 29 13:15 identity
-rw-r--r--   1 krasen krasen  409 Jun 29 13:15 identity.pub
-rw-------   1 krasen krasen 1679 Jun 29 14:30 id_rsa
-rw-r--r--   1 krasen krasen  409 Jun 29 14:30 id_rsa.pub
-rw-r--r--   1 krasen krasen 4698 Jun 29 13:16 known_hosts

krasen@krasen-Lenovo-Y50-70:~$ ssh-agent /bin/bash

vérifier si l'agent est démarré

krasen@krasen-Lenovo-Y50-70:~$ ps -e | grep [s]sh-agent 
26503 ?        00:00:00 ssh-agent
krasen@krasen-Lenovo-Y50-70:~$ ssh-add ~/.ssh/id_rsa
Identity added: /home/krasen/.ssh/id_rsa (/home/krasen/.ssh/id_rsa)
krasen@krasen-Lenovo-Y50-70:~$ ssh-add -l 
2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx /home/krasen/.ssh/id_rsa (RSA)
krasen@krasen-Lenovo-Y50-70:~$ cat ~/.ssh/id_rsa.pub
ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

obtenir cette clé et l'ajouter en tant que clé dans les paramètres de bitbucket

0
makkasi

Assurez-vous que vous avez basculé sur le bon utilisateur sur le terminal. 

Dans mon cas, l'utilisateur root n'était pas celui qui a des clés ssh ajoutées dans le panneau de configuration de bitbucket. L'exécution de git avec Sudo le fait fonctionner à partir de l'utilisateur root et mon propre utilisateur est celui qui a les clés ajoutées. 

0
Erdinç Çorbacı

Dans mon cas, l'ajout de la clé ssh du répertoire a résolu le problème. 

~/.ssh/id_rsa.pub

sur bitbucket.org . Je l'ai nommé aussi id_rsa.pub sur le site Web.

Au début, j'ai ajouté une autre clé créée uniquement pour bitbucket et nommée comme suit. Les premières actions à distance ont fonctionné, mais après quelques jours, la demande a été refusée. 

0
Alex Cio

Mon problème était lié aux autorisations.

Mon répertoire de projet appartenait à root, mais j'étais connecté en tant que ubuntu. Je voudrais obtenir PERMISSION DENIED si je tapais dans une commande git, par exemple. git pull Origin master, alors j'ai utilisé Sudo git pull Origin master.

J'avais enregistré la clé SSH de ubuntu à partir de /home/ubuntu/.ssh/id_rsa.pub avec BitBucket.

Cependant, j'utilisais Sudo. Donc, la clé SSH utilisée était en fait /home/root/.ssh/id_rsa.pub, ce qui était différent de ce que BitBucket avait.

Solution pour mon cas

chown -R username_here:username_here project/folder/here

Maintenant, cela devrait fonctionner si vous ne pré-ajoutez pas Sudo

OUdonne la clé de BitBucket root

0
Toby Mellor