Git: Permission refusée (publickey) fatal - Impossible de lire à partir du référentiel distant. lors du clonage du dépôt Git

153

Je ne parviens pas à cloner un référentiel Git et j'obtiens cette erreur:

krishna.soni@KRISHNACHANDRAS /c/Projects $ git clone http://stage.abc.com:10088/pqr
http://<url>/<repository> Cloning into '<repository>'... fatal: could not read Username for 'http://<url>': No such file or directory

J'ai lu Bitbucket, Windows et "fatal: impossible de lire le mot de passe pour" , mais j'ai toujours le problème.

J'ai continué mais j'obtiens maintenant cette erreur

sh.exe": chown: command not found

krishna.soni@KRISHNACHANDRAS /c
$ git clone ssh://[email protected].
/projects
Cloning into 'C:/projects'...
Permission denied (publickey).
fatal: Could not read from remote repository.

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

> krishna.soni@KRISHNACHANDRAS /c
>     $ git clone ssh:<url>
>     ts
>     Cloning into 'C:/projects'...
>     Permission denied (publickey).
>     fatal: Could not read from remote repository.

Please make sure you have the correct access rights

et le référentiel existe.

KCS
la source
Êtes-vous sûr que c'est un référentiel git?
gravetii
Oui, ça l'est . Je suis nouveau dans git, j'obtiens cette erreur lors du clonage. J'ai ajouté l'adresse e-mail et le nom dans le fichier de configuration global à l'aide des commandes git config --global user.name "John Doe" $ git config --global user.email [email protected]
KCS
La raison principale est que le référentiel ne peut pas vous reconnaître en tant qu'utilisateur du serveur git. Pourriez-vous accéder au serveur via ssh?
Малъ Скрылевъ
Si quelqu'un rencontre ce problème lors de l'utilisation de Github, suivez les étapes mentionnées ici: help.github.com/en/articles/ ... Cela a fonctionné pour moi.
Rounak

Réponses:

69

Cela ressemble à un problème d'autorisations - pas à un problème de Windows 7.

Votre clé ssh n'est pas autorisée - Permission denied (publickey).

Vous devez créer une clé publique ssh et demander à l'administrateur du référentiel Git d'ajouter la sshclé publique

Informations sur la procédure à suivre: l’ enregistrement de la clé ssh échoue

Premier zéro
la source
27
C'est bizarre. Le référentiel est public et je cloné le référentiel public. Je ne sais pas pourquoi je devrais demander à l'administrateur l'autorisation de cloner son référentiel public hébergé sur Github.
Shailen
5
Ouais, c'est faux, vous n'avez rien à demander à l'administrateur, c'est un problème avec le git local.
Ivan Castellanos
3
Pourquoi est-ce difficile? J'ai réussi mais ce n'était pas indolore.
Niklas R.
9
Vous n'avez pas besoin d'autoriser une clé pour les dépôts publics, utilisez simplement le protocole HTTPS: stackoverflow.com/a/33072867/1385678
Diego V
225

Pour les personnes qui viennent ici qui essaient juste d'obtenir le référentiel mais ne se soucient pas du protocole (ssh / https), vous voudrez peut-être simplement utiliser https au lieu de ssh (s'il est pris en charge).

Donc, par exemple, vous utilisez

git clone https://github.com/%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

au lieu de

git clone [email protected]:%REPOSITORYFOLDER%/%REPOSITORYNAME%.git
Arjan
la source
6
C'est le plan de secours le plus approprié si les autorisations ssh ne sont pas résolues ou si vous souhaitez ignorer cette partie.
Wahib Ul Haq
13
Cette réponse a changé le mécanisme de sshà https. Il ne résout pas le problème d'origine en utilisant ssh pour accéder au référentiel. Je me demande comment cela peut continuer à être voté comme une bonne réponse à la question. Les autres réponses ci-dessous le résolvent correctement.
Armin
3
Le problème original est un débutant git essayant de cloner un dépôt. Si l'objectif est de supprimer un repo public, c'est la réponse efficace la plus rapide.
Vivek Chavda
Merci de m'avoir sauvé du suicide. Par ailleurs, cela peut être utilisé pour un dépôt privé étant donné que vous avez le nom d'utilisateur et le mot de passe.
BILL WAGNER le
81

S'il y a toujours un problème d'accès après la création de SSH et son ajout dans votre compte Bitbucket ou ailleurs, vous devez effectuer les opérations suivantes dans le terminal sur GitBash, OSX ou Linux:

# Lists already added identities (‘ssh keys’)
ssh-add -l

Ensuite, si vous ne voyez pas votre clé dans la liste, ajoutez-la par ce qui suit (remplacez-la identitypar son vrai nom):

# Add a new identity
ssh-add ~/.ssh/identity

Cela a fonctionné pour moi.

Srikanth Kondaparthy
la source
3
ssh-add ~/.ssh/identityerreur de retour/Users/lee/.ssh/identity: No such file or directory
lee
14
Lancer "ssh-add" depuis "~ / .ssh" (et entrer la phrase de passe de mon fichier "~ / .ssh / id_rsa" lorsque vous y êtes invité) a résolu le problème pour moi.
James Furey
1
J'ai pu retirer mon repo mais pas pousser sans faire ça, bravo!
Dimitar Nestorov
La réponse de @james Furey m'a aidé à identifier l'arborescence des sources pour identifier l'url ssh en tant que dépôt git.
Fan de YSR le
2
a travaillé pour moi ... après des heures de transpiration et d'essayer différentes choses. La seule chose est au lieu de l'identité à la fin d'utiliser le nom dans votre propre système. Accédez au dossier .ssh en exécutant la commande cd dans le terminal, puis tapez la commande 'ls' dans le terminal. Et puis rejouez la commande "identité" ci-dessus avec votre propre fichier. Accédez au terminal sourcetree et: cd ~puis cd .sshpuis lspuis (copiez le nom sans l'extension .pub) puis (exécutez cette commande)ssh-add ~/.ssh/(copied name)
Tejas
21

J'ai rencontré le même problème avec GitHub . Voici comment le résoudre!

  1. Générez une clé SSH sur votre ordinateur comme décrit ici: Génération de clés SSH .
  2. Connectez-vous à votre compte GitHub : Connexion GitHub .
  3. Dans votre compte, ajoutez la clé SSH nouvellement générée: les clés SSH de mon compte .
  4. Essayez à nouveau git clonele projet.
Maxime
la source
A travaillé comme du charme !!
Prakhar le
1
J'ai maintenant utilisé cette réponse sur 3 nouveaux systèmes d'exploitation au cours des 5 dernières années et cela a parfaitement fonctionné à chaque fois.
kotoole
Apparemment, High Sierra nécessite que l'utilisateur enregistre la clé dans le fichier .ssh / config. El Capitan a en quelque sorte réussi sans cela.
dsomnus
14

J'ai eu ce problème sur un Mac - alors que je configure correctement SSH pour accéder à mon référentiel Git, après le redémarrage (et un certain temps, le Mac était dans l'impasse), toutes mes informations d'identification ont été supprimées. Apparemment, pour une raison quelconque, la clé de pub a été définie sur 644, ce qui l'a obligée à être supprimée du trousseau. À lire:

  • chmod 600 la clé publique
  • ssh-add ~/.ssh/[your private key]- cela devrait afficher que l'identité a été ajoutée. Le fichier clé que vous voulez est celui sans l'extension .pub.
  • ssh-add -l devrait vous montrer l'identité nouvellement ajoutée

edit: apparemment, MacOS a tendance à supprimer les clés - après avoir téléchargé la mise à jour de High Sierra (mais je ne l'ai pas encore installée), ma clé a été supprimée et j'ai dû l'ajouter à nouveau via ssh-add

eithed
la source
2
Cette solution est toujours exacte après la mise à niveau de macOS High Sierra vers la version 10.13.1. Plus précisément, Sourcetree était l'application qui a soulevé le problème lorsque j'ai essayé de pousser un commit vers un référentiel distant. Les étapes ci-dessus ont résolu le problème pour moi.
Paul Bonneville
J'ai eu ce problème sur 10.13.4 et cette solution a fonctionné pour moi.
Andrew Ebling
11

J'ai également fait face au même problème. J'ai fait ce qui suit et cela a fonctionné pour moi:

  1. Générez des clés à partir du client GIT GUI sous Windows. Copiez cette clé dans le presse-papiers.
  2. Ouvrez votre compte sur le bitBucket/site Web de git et ajoutez cette clé à votre profil. De cette façon, le serveur sait que vous êtes un utilisateur légitime accédant à partir d'un système légitime.
  3. C'est tout. Toutes les commandes push ont fonctionné pour moi désormais.
Ashwin Tumma
la source
Cela m'a aidé à voir que j'avais généré mon RSA sans exécuter Git Bash en tant qu'administrateur, ce qui a placé ma clé RSA dans le lecteur "h": oops:
tylerlindell
7

Pour moi, quand je voulais cloner à partir de mon référentiel, j'avais le même message remarqué avant "Permission refusée (publickey) fatale: Impossible de lire à partir du référentiel distant". La solution pour mon cas est de ne pas utiliser sudo avant le clonage. Voilà.

Mustapha
la source
Merci beaucoup @mustapha, vous gagnez vraiment mon temps.
vinay kumar le
7

Github (ou Bitbucket) ne trouve pas votre clé ssh sur leur serveur.

Ajoutez simplement votre clé dans les paramètres de votre compte.

jsxqf
la source
6

Si vous générez une nouvelle clé publique ssh et l'insérez dans bitbucket ou github et

cela n'a pas aidé - veuillez essayer de redémarrer votre PC . Ça m'a aidé!!

Nicolas Asinovich
la source
Merci, c'était aussi ce que je devais faire.
Steph
J'ai dû fermer le terminal et en ouvrir un nouveau pour le voir fonctionner.
rahul
5

Vous devez créer une nouvelle clé ssh en exécutant ssh-keygen -t rsa.

biniam
la source
La référence @Joel Heroku est supprimée. Merci
biniam
4

J'ai eu l'erreur ...

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

... lorsque j'essayais de prendre contact à partir d'une invite Git Bash vers Bitbucket après que mon ordinateur portable soit mort suite à une mauvaise mise à jour de Windows 10 et qu'il soit revenu aux paramètres d'usine. J'avais restauré tous mes fichiers ssh à partir d'une sauvegarde.

La cause de l'erreur s'est avérée être une incompatibilité dans le nom de mon compte Windows après la reconstruction de l'ordinateur. J'ai appris que le fichier de clé publique id_rsa.pubse termine par une chaîne facilement lisible comprenant le nom de mon compte Windows suivi d'un @signe puis du nom de l'ordinateur.

Lors de la configuration initiale de mon ordinateur, j'ai créé le nom de mon compte Windows avec l'initiale du deuxième prénom, mais lorsque mon ordinateur a été réinitialisé aux paramètres d'usine, notre nouveau responsable DevOps a créé mon nom de compte sans mon initiale.

Pour résoudre le problème, j'ai simplement modifié mon fichier de clé publique id_rsa.pubet supprimé l'initiale du milieu de mon nom à la fin. J'avais gardé le même nom d'ordinateur, donc ça allait. J'ai copié le contenu du fichier dans le presse-papiers de Windows. Je me suis ensuite connecté à Bitbucket, je suis allé dans les paramètres de Bitbucket sous mon avatar et j'ai ajouté une nouvelle clé publique dans laquelle j'ai collé le nouveau contenu.

De retour à l'invite Git Bash, j'ai confirmé que cela fonctionnait maintenant en entrant la commande ...

ssh -T [email protected]

... et j'ai reçu un message indiquant que j'étais connecté.

Ken A Collins
la source
4

Sous macOS / Linux (Ubuntu):

1. Pour vous authentifier, vous devez ajouter votre partie publique de votre paire de clés SSH à bitbucket à partir de vos paramètres utilisateur: Paramètres utilisateur -> Clés SSH

Vous trouverez cette partie publique dans votre répertoire ~ / .ssh, généralement id_rsa.pub. notez la .pubpartie du nom de fichier pour Public. cela vous aidera à en générer un si vous n'en avez pas déjà un

Vous n'avez pas encore fini ...

2. Vous devez indiquer à votre système quelle clé utiliser avec quel hôte distant, alors ajoutez ces lignes à votre fichier ~ / .ssh / config

Host bitbucket.org
 IdentityFile ~/.ssh/PRIVATE_KEY_FILE_NAME

PRIVATE_KEY_FILE_NAMEest le nom de la partie privée de votre paire de clés SSH, si vous ne l'avez pas manipulé, généralement son nom par défaut est: id_rsa dans ce cas, remplacez PRIVATE_KEY_FILE_NAMEci-dessus par id_rsa(la clé privée N'A PAS d' .pubextension)

ninjayoto
la source
Remarque, vous avez mal orthographié "Ubuntu" - les modifications doivent comporter au moins 6 caractères, je ne peux donc pas suggérer la modification :)
Misha Nasledov
4

Fil utile et je n'apporte pas grand chose de nouveau à la table. Le pas que j'ai fait fait également partie de la description que Maxime pointe utilement mais certains peuvent l'ignorer. La section ajoute votre clé SSH à l'agent ssh .

J'avais déjà généré ma clé ssh mais après un redémarrage, je n'ai pas pu cloner l'un de mes propres référentiels.

J'ai dû démarrer l'agent ssh et ajouter la clé privée à cet agent afin de cloner.

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
kometen
la source
3

J'ai rencontré le même problème lors de l'exécution de la git clonecommande à partir de la ligne de commande Windows. Mais la commande s'exécute avec succès depuis Git Bash .

lazyvab
la source
3

J'ai eu le même problème. J'ai changé les clés ssh et redémarré et essayé toutes les autres solutions «n». Mais le vrai problème pour moi était que notre protocole par défaut gitlab était passé de ssh à https.

vérifier l'url distante avec

git remote -v

changer l'url distante

git remote set-url origin https://URL
nantitv
la source
C'est parfait, nous n'avons pas besoin de configurer ssh.
Rohit Parte
J'ai dû faire la même chose. La clé ssh ne fonctionnait pas pour moi dans ce cas
Dani
fatal: impossible d'accéder à ' bitbucket.org:xxxxxx/xxxxxxxxt ': numéro de port terminé par 'r'
nosequeweaponer le
2

Si tout échoue, comme ce fut le cas avec moi, désinstallez GIT, réinstallez. Pour une raison quelconque, cela corrige.

PS

  1. J'ai essayé de générer de nouvelles clés et de mettre à jour les clés publiques SSH
  2. J'ai également essayé de supprimer toutes les clés et essayé de créer une nouvelle clé.
  3. Et NON, rien de mal avec mon .gitconfig
Ronak Agrawal
la source
2

correction pour l' huboutil cli:

  • git config --global hub.protocol https à long terme
  • git remote add OOPS https://github.com/isomorphisms/go.git&& git push OOPSpour une solution immédiate

Cette erreur se produit avec l' huboutil de ligne de commande en raison de leur valeur hub.protocolgit-config par défaut incorrecte . Ils ont mis les pensions à

git://github.com/schacon/ticgit.git

au lieu de ce que github accepte réellement, à savoir https://github.com/schacon/ticgit.git.


La lecture LESS=+/"HTTPS instead" man hubexpliquera d'où vient la commande "correction à long terme" ci-dessus.

isomorphismes
la source
Cela m'a sauvé la journée!
Jay Lee
1

Lors du clonage, j'ai eu un problème similaire [mon ERREUR: Autorisation refusée (publickey). fatal: impossible de lire à partir du référentiel distant. Veuillez vous assurer que vous disposez des droits d'accès appropriés .. etc.]

- J'utilisais bitBucket / UBUNTU14.04 dans mon cas, mais j'avais DÉJÀ un ensemble de fichiers clés que j'avais précédemment générés ET j'avais changé le nom des fichiers. J'ai simplement COPIÉ les fichiers au format de nom standard id_rsa & id_rsa.pub. J'ai ensuite relancé la commande sans problème.

OBTW : J'aurais pu également utiliser l'invite de mot de passe en utilisant le clone de style HTTP.

Jorge de la Torre
la source
0

J'ai eu un problème similaire sur Linux. J'ai résolu le problème en me connectant au serveur github et en créant une clé de déploiement. C'est sous les paramètres du référentiel. Ensuite, j'ai copié et collé ma clé publique (qui se trouve généralement dans ~ / .ssh / id_rsa.pub, mais votre configuration peut être différente). Il existe une case à cocher pour donner à cette clé l'accès en écriture. Cliquez dessus (à moins que vous n'utilisiez git pour déployer uniquement, auquel cas ne cliquez pas dessus).

user1928764
la source
0

J'ai eu la même erreur. Ma solution était de se déconnecter et de se reconnecter car mon agent ssh était devenu désynchronisé avec la clé ssh distante.

Ajouter ceci ici juste au cas où quelqu'un aurait vu que les autres réponses ne semblent pas s'appliquer à leur situation.

Martlark
la source
0

J'étais confronté au même problème lors de la configuration de ssh pour gitlab. J'ai déjà ssh pour githubet je ne pourrais pas l'écraser. Les étapes qui ont fonctionné pour moi sont:

  1. Générez SSH avec un nouveau chemin et ajoutez-le à la liste ssh ssh-add /path/to/new/id_rsa.
  2. Créez un fichier nommé configen ~/.ssh/utilisant. J'ai utilisé vi ~/.ssh/config/.
  3. Ajoutez ceci au fichier nouvellement créé

# GitLab.com server Host gitlab.com RSAAuthentication yes IdentityFile /path/to/new/id_rsa

  1. Sauvegarder et quitter.

Après cela, redémarrez le terminal et essayez de pousser, cela devrait fonctionner

Ishwar Rimal
la source
0

Si vous souhaitez cloner des projets open source pour soumettre une Pull Request:

Je voulais cloner un projet open source afin de pouvoir soumettre des pull requests. Le problème était que je n'avais pas les autorisations du propriétaire du projet. Peu importe, puisque mon intention était de soumettre un PR, voici une alternative viable:

Ma solution:

  1. Dépôt de Fork

Repo de fourche

  1. Puis clonez à partir de votre référentiel forké. Cloner à partir du dépôt fourchu

  2. Travaillez sur vos fonctionnalités, puis soumettez une pull request.

BKSpurgeon
la source
0

Vous pouvez essayer d'ajouter votre clé ssh à votre trousseau privé. Ça a marché pour moi

ssh-add -K ~/.ssh/[your-private-key]
Ankur Kedia
la source
"option inconnue - K"
Jiří Doubravský
0

solution: sur le serveur sur lequel vous essayez de cloner ou de pousser depuis cat ~ / .ssh / id_rsa.pub Accédez à GitHub, paramètres, clés SSH et GPG , nouvelle clé de collage de clé SSH .

user5854766
la source
0

Je vois que ce message d'erreur a de nombreuses raisons différentes. J'ai eu la même erreur en essayant de configurer localement un autre référentiel à côté de celui qui fonctionne déjà entièrement avec ssh, etc. et de le connecter au même serveur, mais à un autre référentiel. Aucune réponse n'était ici pour être trouvée, mais je l'ai compris. Alors je le poste. J'espère aider quelqu'un.

git remote add origin [email protected]:teamalpha/repositorytwo.git
uldics
la source
0

si aucune de ces réponses n'aide et

  1. vous utilisez Windows
  2. vous générez votre clé avec Putty ou vous avez installé Putty sur votre PC
  3. vous générez votre clé avec CMD ou PowerShell

Essayer

  1. supprimer vos clés
  2. rechercher sur Windows pour Git Bash, puis générer une nouvelle clé avec la ligne de commande Git Bash
  3. ajouter une clé publique à votre repo en ligne

Ensuite, vous trouverez après git clone et tapez yes pour confirmer, il devrait commencer à cloner

Fadeoc Khaos
la source
-2

C'est peut-être stupide mais cela nous est arrivé:

Si vous utilisez bitbucket et Sourcetree et que vous copiez et collez simplement l'URL de clonage dans la nouvelle boîte de dialogue du dépôt, la même erreur s'affichera lors de l'extraction ou de la poussée.

Assurez-vous de supprimer les éléments 'git clone' avant l'URL.

Mijail
la source