web-dev-qa-db-fra.com

Clé publique SSH de l'arbre source refusée

Je travaille sur un projet dans un référentiel privé sur https://www.bitbucket.com .

Je le code localement, puis je prépare, valide et pousse la mise à jour via le client Windows Git de BitBucket, Sourcetree .

Après cela, je récupère les fichiers d'un serveur distant partagé , ce qui nécessite une authentification SSH.

J'ai essayé ce qui suit afin de connecter le dépôt git au compte bitbucket:

  1. Lancement de l'agent SSH Sourcetree intégré (Pageant)
  2. Ajout de mon .ppk (clé privée PuTTY) à Pageant en utilisant ma phrase secrète
  3. Ouverture du terminal SourceTree à l'emplacement de mon projet, appelons-le C:/Project.
  4. Utilisez git init Pour initialiser le référentiel.
  5. Utilisé git Push -u Origin --all Afin de Pousser le dépôt de mon ordinateur vers BitBucket.
  6. Vous avez cette erreur: Permission denied (publickey).
  7. J'ai essayé de voir si je peux ssh -Tv [email protected] - Toujours, Permission denied.

J'essaie de comprendre ce qui s'est exactement passé - a-t-il trouvé ma clé SSH? La clé n'est-elle pas chargée à un endroit spécifique?

Remarque: J'ai chargé la clé publique dans mon profil sur BitBucket.

36
t0mgs

Eh bien, j'ai trouvé la solution après de nombreux essais et erreurs. Apparemment, en utilisant keygen de PuTTY et en stockant la nouvelle clé publique dans mon .ssh le dossier ne fonctionne pas. Cependant, en utilisant ssh-keygenIN GIT BASH puis essayer de se connecter en utilisant la nouvelle paire de clés générée, fonctionne très bien. Par curiosité mais plus que tout - j'aimerais savoir pourquoi c'est le cas.

9
t0mgs

À qui peut avoir le même problème sur Mac avec la nouvelle Sierra. La solution serait d'ajouter une clé privée à l'agent SSH via:

ssh-add -K ~/.ssh/id_rsa

Il semble que l'identité [id_rsa] ne persiste pas par l'agent SSH.

Notez que ce n'est pas une solution permanente .. Vous devriez le faire à chaque fois que vous clonez un nouveau référentiel. Du moins, pas besoin de fournir de clé privée pour chaque Push à distance.

-------- Mise à jour 28.Sep.2017 --------

Solution permanente (sur Sierra):

Pas:

1- Assurez-vous d'avoir un ssh-agent en cours d'exécution avant de faire quoi que ce soit.

Pour vérifier si ssh-agent est exécuté par:

pgrep 'ssh-agent'

Cette commande renvoie le PID (ProcessID) de ce processus s'il est en cours d'exécution. Si vous voyez une valeur .. Passez à l'étape 2. sinon, vous devez exécuter cet agent en arrière-plan en:

eval "$(ssh-agent -s)"

2- Modifier ~/.ssh/config (Créer s'il n'existe pas en tant que su):

Host *
 AddKeysToAgent yes
 UseKeychain yes
 IdentityFile ~/.ssh/id_rsa

3- Ajoutez ensuite cet agent clé (ce serait une fois):

ssh-add -K ~/.ssh/id_rsa

C'est ça.

En fait, l'étape # 2 est cruciale. Je veux juste fournir un guide complet.

J'espère que cela peut vous aider. '.

79
Maher Abuthraa

J'avais besoin de modifier davantage ces paramètres SourceTree:enter image description here

17
ApceH Hypocrite

Je sais que cela est résolu, mais pour ajouter à la réponse acceptée, vous n'avez pas vraiment besoin de Git Bash pour que cela fonctionne. Comme l'a dit Cupcake, il est vrai que PuTTY met .ppk fichiers pour les clés privées, qui ne fonctionneront pas en dehors du contexte habituel PuTTY/Pageant.

En effet, le terminal s'attend par défaut à trouver un fichier nommé id_rsa dans ~/.ssh et PuTTY ne génère pas cela par défaut. Git Bash's ssh-keygen le fait cependant, c'est pourquoi la solution de Tom Granot fonctionne. Vous POUVEZ, cependant, via le générateur de clés PuTTY, exporter le même fichier exact via le Conversions/Export OpenSSH Key... option dans le menu. Assurez-vous simplement de le nommer id_rsa et placez-le à côté de votre id_rsa.pub fichier, et tout devrait bien fonctionner.

10
Frédéric Bolduc

Cela m'est arrivé après avoir mis à jour mon Sourcetree sur mon Mac. Ce qui a fonctionné pour moi, c'était simplement de tout supprimer dans le ~/.ssh/ dossier sauf le .config et le known_hosts Dossiers. Ensuite, accédez simplement à sourcetree dans les préférences, supprimez votre compte github, ajoutez à nouveau le profil après avoir supprimé tous les .ssh les clés publiques et privées et sourcetree doivent rajouter les clés localement et à GitHub

2
Rashad Akoodie