Quelqu'un a vu cette erreur et sait quoi faire?
J'utilise le terminal, je suis à la racine, le référentiel GitHub existe et je ne sais pas quoi faire maintenant.
> git Push -u 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.
GitHub ne peut pas vous authentifier. Donc, soit vous n'êtes pas configuré avec une clé SSH, parce que vous n'avez pas en configurer une sur votre machine , soit votre clé n'est pas associée à votre compte GitHub.
Vous pouvez également utiliser l'URL HTTPS au lieu de l'URL SSH/git pour éviter de traiter avec des clés SSH. C'est méthode recommandée par GitHub .
De plus, GitHub a un page d'aide spécialement pour ce message d'erreur , et explique plus en détail tout ce que vous pouvez vérifier.
Avez-vous créé un fichier config dans votre répertoire ~/.ssh? Il devrait avoir un contenu comme celui-ci:
Host github.com
IdentityFile ~/.ssh/github_rsa
En supposant que vous ayez créé une clé ssh nommée github_rsa
et l'a chargé sur GitHub ...
REMARQUE: Vous devez suivre cette méthode de configuration explicite si vous avez plus d'une clé (deux ou plus) dans votre répertoire ~/.ssh /. Si vous ne spécifiez pas la clé de cette manière, la première clé dans l'ordre est utilisée et utilisée pour l'authentification de github; elle dépend donc du nom du fichier de clé.
Vous devez générer une clé SSH (si vous n'en avez pas) et associer la clé publique à votre compte Github. Voir la propre documentation de Github .
Je connais ce problème. Après avoir ajouté la clé ssh, ajoutez votre clé ssh à l'agent ssh également (à partir de documents officiels https://help.github.com/articles/generating-ssh-keys/ )
ssh-agent -s
ssh-add ~/.ssh/id_rsa
Après cela, tout fonctionne bien, git peut voir la clé appropriée, avant de ne plus pouvoir.
Cela m'est arrivé Pour une raison quelconque, mon origine a été gâchée sans que je m'en rende compte:
Vérifiez si vos paramètres sont toujours corrects
git remote -v
l'URL doit être quelque chose comme ssh: //[email protected]/YourDirectory/YourProject.git; si vous ne voyez pas [email protected], utilisez
git remote set-url Origin git://github.com/YourDirectory/YourProject.git
pour bien faire les choses. Vous pouvez également utiliser l'application github pour vérifier et définir l'URL du référentiel distant principal dans le panneau des paramètres de votre référentiel particulier.
Premièrement, nous devons vérifier les clés SSH existantes sur votre ordinateur. Ouvrez le terminal et lancez:
ls -al ~/.ssh
#or
cd ~/.ssh
ls
et cela va lister les fichiers dans votre répertoire .ssh
Et enfin, selon ce que vous voyez (dans mon cas, c'était):
github_rsa github_rsa.pub known_hosts
Essayez simplement de configurer votre RSA et espérons que cela résoudra vos problèmes de "git Push Origin"
$ ssh-keygen -lf ~/.ssh/github_rsa.pub
NOTE: Les certificats RSA sont des clés appariées. Vous aurez donc un certificat privé et un certificat public. Le certificat privé ne sera pas accessible car il appartient à github (dans ce cas) mais le public est celui que vous peut-être manquant lorsque cette erreur se produit (du moins c'était mon cas, mon compte github ou repo a été gâché d'une façon ou d'une autre et je devais "lier" la clé publique générée précédemment)
En supposant que vous connectiez GitHub sur SSH, vous pouvez exécuter la commande ci-dessous pour le confirmer.
$git config --get remote.Origin.url
Si vous obtenez un résultat au format suivant [email protected]: xxx/xxx.github.com.git, procédez comme suit.
Générez une clé SSH (ou utilisez une clé existante). si vous en avez un, il vous suffit d’ajouter votre clé à ssh-agent (étape 2) et à votre compte GitHub (étape 3).
ci-dessous sont pour ceux qui n'ont pas de clé SSH.
Étape 1 Génération d'une paire de clés rsa publique/privée.
$ssh-keygen -t rsa -b 4096 -C "[email protected]"
Vous serez invité à confirmer l'emplacement de sauvegarde de la clé SSH et le mot de passe que vous souhaitez utiliser.
Étape 2 Ajoutez votre clé à l'agent-ssh
Assurez-vous que ssh-agent est activé
$eval "$(ssh-agent -s)"
Ajoutez votre clé SSH à ssh-agent:
$ssh-add ~/.ssh/id_rsa
Étape 3 Ajoutez votre clé SSH à votre compte.
$Sudo apt-get install xclip
$xclip -sel clip < ~/.ssh/id_rsa.pub
Ajoutez ensuite la clé copiée à GitHub
Allez dans Paramètres -> touches SSH (barre latérale des paramètres personnels) - > Ajouter une clé SSH -> remplir le formulaire (la clé est sur votre presse-papiers, utilisez simplement ctrl + v) -> Ajouter une clé
Après avoir suivi les étapes ci-dessus, vous devez résoudre le problème des autorisations.
Lien de référence: Génération de clés SSH .
Je recevais cette erreur. Il s'avère que je venais de mettre à niveau OSX vers Sierra et que mon ancienne clé n'était plus enregistrée.
Au début, je pensais que c'était "La mise à niveau vers macOS Sierra cassera vos clés SSH et vous isolera de vos propres serveurs"
Mais j'avais évité celui-là. Il s'avère que je viens juste de ré-enregistrer ma clé existante:
ssh-add -K
Et tapez la phrase secrète ... c'est fait!
Si vous n'accédez pas à votre propre référentiel, ou clonez à l'intérieur d'un référentiel cloné (à l'aide de certaines commandes "git submodule ..."):
Dans le répertoire personnel de votre référentiel:
$ ls -a
1. Ouvrez ".gitmodules", et vous trouverez quelque chose comme ceci:
[submodule "XXX"]
path = XXX
url = [email protected]:YYY/XXX.git
Changez la dernière ligne pour être le HTTPS du référentiel que vous devez extraire:
[submodule "XXX"]
path = XXX
https://github.com/YYY/XXX.git
Enregistrer ".gitmodules", et exécuter la commande pour les sous-modules, et ".git" seront mis à jour.
2. Ouvrez ".git", allez dans le fichier "config", et vous trouverez quelque chose comme ça:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "Origin"]
url = https://github.com/YYY/XXX.git
fetch = +refs/heads/*:refs/remotes/Origin/*
[branch "master"]
remote = Origin
merge = refs/heads/master
[submodule "XXX"]
url = [email protected]:YYY/XXX.git
Changez la dernière ligne pour être le HTTPS du référentiel que vous devez extraire:
url = https://github.com/YYY/XXX.git
Donc, dans ce cas, le problème principal est simplement avec l’URL. Le HTTPS de n'importe quel référentiel se trouve maintenant en haut de la page du référentiel.
Assurez-vous que ssh-add -l
affiche l'empreinte d'une clé SSH figurant dans la liste des clés SSH de votre compte Github.
Si la sortie est vide, mais que vous savez que vous avez une clé SSH privée qui fonctionne avec votre compte github, exécutez ssh-add
sur cette clé (trouvée dans ~/.ssh
. Elle s'appelle id_rsa
par défaut, donc vous lancerez probablement ssh-add id_rsa
).
Sinon, suivez ces instructions pour générer une paire de clés SSH.
cela a fonctionné pour moi:
1- supprimer toutes les origines
git remote rm Origin
(cf. https://www.kernel.org/pub/software/scm/git/docs/git-remote.html )
* remote: "Gère l'ensemble des référentiels (" télécommandes ") dont vous suivez les branches.
* rm: "Supprime la télécommande nommée. Toutes les branches de suivi à distance et les paramètres de configuration de la télécommande sont supprimés."
2- vérifier que tout a été supprimé:
git remote -v
3- ajouter un nouveau maître d'origine
git remote add Origin [email protected]:YOUR-GIT/YOUR-REPO.git
c'est tout les gens!
ne autre solution:
pour créer les clés SSH, tapez ssh-keygen -t rsa -C "[email protected]"
. Cela créera les fichiers id_rsa et id_rsa.pub.
Ajoutez le id_rsa à la liste SSH sur l'ordinateur local: ssh-add ~/.ssh/id_rsa.
Après avoir généré les clés, obtenez la clé publique avec:
cat ~/.ssh/id_rsa.pub
vous obtiendrez quelque chose comme:
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAACAQCvMzmFEUPvaA1AFEBH6zGIF3N6pVE2SJv9V1MHgEwk4C7xovdk7Lr4LDoqEcqxgeJftwWQWWVrWWf7q9qCdHTAanH2Q5vx5nZjLB+B7saksehVOPWDR/MOSpVcr5bwIjf8dc8u5S8h24uBlguGkX+4lFJ+zwhiuwJlhykMvs5py1Gd2hy+hvOs1Y17JPWhVVesGV3tlmtbfVolEiv9KShgkk3Hq56fyl+QmPzX1jya4TIC3k55FTzwRWBd+IpblbrGlrIBS6hvpHQpgUs47nSHLEHTn0Xmn6Q== [email protected]
copiez cette clé (valeur) et allez sur github.com et sous le paramètre (ssh et pgp key) ajoutez votre clé publique.
J'utilisais github plus tôt pour l'un de mes projets php. Lors de l'utilisation de github, j'utilisais ssh au lieu de https. J'avais mon machine configurée comme ça et chaque fois que je commettais et poussais le code, il me demandait mon mot de passe de clé rsa.
Après quelques jours, j'ai arrêté de travailler sur le projet php et j'ai oublié mon mot de passe rsa. Récemment, j'ai commencé à travailler sur un projet Java et je suis passé à bitbucket. Depuis, j'avais oublié le mot de passe et il y a aucun moyen de le récupérer Je suppose, j'ai décidé d'utiliser le protocole https (recommandé) pour le nouveau projet et j'ai obtenu la même erreur que celle posée dans la question.
Comment je l'ai résolu?
Exécutez cette commande pour indiquer à mon git d'utiliser https au lieu de ssh:
git config --global url."https://".insteadOf git://
Supprimer toute télécommande éventuelle
git remote rm Origin
Refaites tout de git init à git Push et ça marche!
PS: J'ai également désinstallé ssh de ma machine pendant le processus de débogage en pensant que le supprimer résoudrait le problème. Oui je sais!! :)
Je pense avoir la meilleure réponse pour vous, vos applications git lisent votre id_rsa.pub dans le répertoire utilisateur root
/home/root/.ssh/id_rsa.pub
C'est pourquoi votre clé dans /home/votre_nom_utilisateur/.ssh/id_rsa.pub ne peut pas être lue par git. Vous devez donc créer la clé dans /home/root/.ssh/
$ Sudo su
$ ssh-keygen
$ cd ~/.ssh
$ cat id_rsa.pub
Ensuite, copiez la clé dans votre compte github. Cela a fonctionné pour moi. Tu peux l'essayer.
Si vous avez déjà créé une clé SSH et obtenez toujours l'erreur, c'est parce que vous devez donner à l'utilisateur les autorisations de lecture et d'écriture dans le dossier dans lequel vous effectuez le clonage. Pour ce faire, Sudo chmod 777 <your_folder_name_here>"
. Bien sûr, ceci est après que vous ayez généré une clé SSH et que vous obtenez toujours cette erreur. J'espère que cela aide les futurs utilisateurs.
Éditer
Pour ajouter à cela, utilisez admin sous Windows si vous utilisez git bash
Problème résolu si vous modifiez l'accès ssh en accès https au référentiel distant:
git remote set-url Origin https_link_to_repository
git Push -u Origin master
J'aimerais ajouter certaines de mes conclusions:
Si vous utilisez GitBash
, assurez-vous que la clé SSH est stockée dans ~/.ssh/id_rsa
.
Par défaut, GitBash
recherche ~/.ssh/id_rsa
comme chemin par défaut de la clé SSH.
Même le nom de fichier id_rsa
est important. Si vous enregistrez votre clé SSH dans un autre nom de fichier ou un autre chemin, le message Permission Denied(publickey)
error sera généré.
J'ai eu le même problème récemment. Cela peut aider si vous avez besoin d'une solution immédiate, mais cela doit être fait à chaque fois que vous redémarrez votre système.
Depuis le terminal, lancez: ssh-add ~/.ssh/id_rsa
Entrez votre mot de passe système et cela devrait fonctionner.
J'avais un problème similaire à @Batman. Cependant, comme j’exécutais cela sous/usr/local/src/nomprojet, exécuter sans Sudo n’était pas une option.
Il suffit d’ajouter le - drapeau E pour préconfigurer l’environnement (votre ~/.ssh/chemin).
$ Sudo -E git clone git@your_repo
De l'homme Sudo:
-E, --preserve-env Indique dans la politique de sécurité que l'utilisateur souhaite conserver ses variables d'environnement existantes. La politique de sécurité peut renvoyer une erreur si l'utilisateur ne dispose pas de l'autorisation de préserver l'environnement.
Également dans Ubuntu, même s’il y avait déjà une clé SSH entrée dans les paramètres de BitBucket, j’ai eu ce problème. La raison était, j'essayais ce qui suit:
Sudo git Push Origin master
Je ne sais pas pourquoi, mais cela a été résolu en utilisant
git Push Origin master
Pas de Sudo utilisé.
Une fois que cela se produira, vous devrez suivre les instructions de GitHub après avoir créé votre référentiel. Git vous demandera d'ajouter votre télécommande avec quelque chose comme ça.
git remote add Origin [email protected]:<user>/<project>.git
Remplacez le contenu de <> par les valeurs liées à votre compte.
La solution consiste à supprimer le suffixe .git
. Ajoutez la télécommande comme suit:
git remote add Origin [email protected]:<user>/<project>
Si vous utilisez l'interface utilisateur de GitHub pour Mac, vérifiez les préférences pour vous assurer que vous êtes connecté.
vous pouvez utiliser l'URL Https pour vous connecter
je suppose que vous essayez de vous connecter avec l'URL ssh lorsque vous dites git Push si vous ne demandez que le mot de passe, considérez que vous vous connectez via ssh.better vous utilisez http url.
tl; dr
dans ~/.ssh/config
put
PubkeyAcceptedKeyTypes=+ssh-dss
Scénario Si vous utilisez une version d'openSSH> 7, comme sur un MacBook Pro à barre tactile, il s'agit de ssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0
Vous avez également eu un ancien Mac sur lequel Github avait initialement placé votre clé. Il est possible qu’une clé id_dsa soit utilisée. OpenSSH v7 n'utilise pas par défaut l'utilisation de ces clés DSA (qui incluent ce ssh-dss
), mais vous pouvez toujours le rajouter en ajoutant le code suivant dans votre ~/.ssh/config
PubkeyAcceptedKeyTypes=+ssh-dss
La source qui a fonctionné pour moi est la suivante Newsletter Gentoo
Maintenant, vous pouvez au moins utiliser GitHub et ensuite fixer vos clés à RSA.
OK, il y a peu de solutions à celle-ci, certaines d'entre elles ont peut-être déjà été mentionnées, mais juste pour les garder ensemble:
assurez-vous que vos clés sont présentes, par défaut un autre dossier ~/.ssh /, c’est-à-dire id.rsa et id.rsa.pub
assurez-vous que les clés disposent des autorisations appropriées, vous pouvez exécuter chmod:
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
assurez-vous que le contenu de votre clé publique (id_rsa.pub) correspond à celui chargé dans la configuration du référentiel distant
Enfin, corrigez les problèmes avec l'agent ssh: ssh-add
Quelques informations supplémentaires: https://itcodehub.blogspot.com/2015/01/ssh-add-problems-with-ssh-agent-and.html
Je recevais la même erreur lors de 'git Push'. Du côté du client, j'avais deux origines et un maître. J'ai enlevé un, puis ça a bien fonctionné.
Allez dans le tableau de bord de votre compte GitHub, trouvez le référentiel de votre projet, cliquez sur Paramètres onglet - sous Déployer les clés vous devrez ajouter votre clé SSH. Ouvrez le terminal et tapez:
cat ~/.ssh/id_rsa.pub | pbcopy
Cela copiera la clé de votre fichier id_rsa.pub. Il suffit donc de revenir au tableau de bord GitHub, de le coller, de cliquer Ajouter une clé et le tour est joué.
La même solution s'applique aux comptes Bitbucket.
Utiliser Https c'est bien, exécutez git config --global credential.helper wincred
pour créer un assistant d'identification Github qui stocke vos informations d'identification pour vous. Si cela ne fonctionne pas, alors vous devez éditer votre fichier config
dans votre répertoire .git
et mettre à jour l’origine à l’URL https.
Voir ce lien pour la documentation github.
Pour moi j'ai essayé ceci -
eval "$(ssh-agent -s)"
alors je cours
ssh-add ~/.ssh/path-to-the-keyfile
et pour générer la clé, vous pouvez exécuter
ssh-keygen -t rsa -b 4096 -C "[email protected]"
cela générera la paire de clés (publique et privée).
vous pouvez stocker cette clé dans github pour en savoir plus Ajouter une nouvelle clé SSH à votre compte GitHub
J'espère que ça va aider les autres :)
J'avais 2 fichiers d'identité Github chargés dans l'agent ssh. Ma clé personnelle et une autre pour un projet client.
J'ai enlevé la clé qui était source de confusion:
ssh-add -d id_rsa_github_somekey
Peut-être que votre agent ssh n'est pas activé Vous pouvez l'essayer
Installez-le
Activer ssh-agent
C:\Program Files\Git\cmd
start-ssh-agent
Utilisez l'URL de cette page lorsque vous ajoutez GitHub en tant que télécommande. il ne causera pas une telle erreur et poussez le code
J'ai trouvé cette page en cherchant une solution à un message d'erreur similaire utilisant git pull
sur un hôte distant:
$ git pull
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
J'étais connecté de mon ordinateur local à l'hôte distant via ssh -AY remote_hostname
. Ce n'est pas une solution à la question de OP, mais utile pour les autres personnes qui tombent sur cette page, alors publiez-la ici.
Notez que dans mon cas, git pull
fonctionne correctement sur mon ordinateur local (c’est-à-dire que la clé ssh a été configurée et ajoutée au compte GitHub, etc.). J'ai résolu mon problème en ajoutant ceci à ~/.ssh/config
sur mon ordinateur portable:
Host *
ForwardAgent yes
Je me suis ensuite reconnecté à l'hôte distant avec ssh -AY remote_hostname
et git pull
fonctionnait maintenant. La modification de la configuration permet de transférer ma paire de clés ssh de mon ordinateur local à n’importe quel hôte. L'option -A
de ssh
le transmet effectivement dans cette session SSH. Voir plus de détails ici.