Je suis sur Mac Snow Leopard et je viens d'installer git
.
Je viens d'essayer
git clone [email protected]:cakebook.git
mais cela me donne cette erreur:
Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Qu'est-ce que je rate?
J'ai également essayé de faire ssh-keygen
sans mot de passe mais avec la même erreur.
l'utilisateur n'a-t-il pas généré de paire de clés publique/privée ssh auparavant?
Cette information fonctionne sur theChaw mais peut être appliquée à tous les autres référentiels git prenant en charge l'authentification par clé publique SSH. (Voir gitolite , gitlab ou github par exemple.)
Commencez tout d'abord par configurer votre propre jeu de paires de clés publique/privée. Cela peut utiliser DSA ou RSA, donc toute clé que vous configurez fonctionnera. Sur la plupart des systèmes, vous pouvez utiliser ssh-keygen.
- D'abord, vous voudrez vous connecter à votre répertoire .ssh. Ouvrez le terminal et lancez:
cd ~/.ssh && ssh-keygen
- Ensuite, vous devez copier ceci dans votre presse-papier.
- Sous OS X, exécutez:
cat id_rsa.pub | pbcopy
- Sous Linux, exécutez:
cat id_rsa.pub | xclip
- Sous Windows (via Cygwin/Git Bash), exécutez:
cat id_rsa.pub | clip
- Ajoutez votre clé à votre compte via le site.
- Enfin, configurez votre .gitconfig.
git config --global user.name "bob"
git config --global user.email bob@...
(n'oubliez pas de redémarrer votre ligne de commande pour vous assurer que la configuration est rechargée)C'est ça, vous devriez être bon à cloner et à la caisse.
De plus amples informations sont disponibles sur https://help.github.com/articles/generating-ssh-keys (merci à @Lee Whitney) -
l'utilisateur a-t-il déjà créé une paire de clés publique/privée ssh?
eval $(ssh-agent -s)
dire où sont les clés
ssh-add ~/.ssh/id_rsa
Un dépannage plus complet et même une réparation automatisée peuvent être effectués avec:
ssh -vT [email protected]
Source: https://help.github.com/articles/error-permission-denied-publickey/
Cette erreur peut survenir lorsque vous accédez à l'URL SSH (lecture/écriture) au lieu de l'URL en lecture seule Git, mais que vous n'avez pas d'accès en écriture à ce référentiel.
Parfois, vous voulez simplement cloner votre propre repo, par exemple. déployer sur un serveur. Dans ce cas, vous n'avez en fait besoin que d'un accès en lecture seule. Mais comme il s'agit de votre propre repo, GitHub peut afficher l'URL SSH si tel est votre choix. Dans cette situation, si la clé publique de votre hôte distant ne se trouve pas dans vos clés GitHub SSH, votre accès sera refusé, ce qui devrait se produire .
Un cas équivalent est lorsque vous essayez de cloner le dépôt de quelqu'un d'autre auquel vous n'avez pas accès en écriture avec l'URL SSH.
Dans un mot, si votre intention est de cloner uniquement un référentiel, utilisez l'URL HTTPS (https://github.com/{user_name}/{project_name}.git
) au lieu de l'URL SSH ([email protected]:{user_name}/{project_name}.git
), ce qui évite la validation (inutile) de clés publiques.
Mise à jour: GitHub affiche maintenant le protocole HTTPS en tant que protocole par défaut, ce qui pourrait probablement réduire l'utilisation abusive d'adresses URL SSH.
Le github help link m'a aidé à résoudre ce problème. On dirait que la clé ssh n'a pas été ajoutée à ssh-agent. C'est ce que j'ai fini par faire.
Commande 1:
Assurez-vous que ssh-agent est activé. La commande démarre ssh-agent en arrière-plan:
eval "$(ssh-agent -s)"
Commande 2:
Ajoutez votre clé SSH à ssh-agent:
ssh-add ~/.ssh/id_rsa
J'ai le même rapport d'erreur.
Correction de l'utilisation de HTTP à la place. Depuis je ne veux pas définir "clés SSH" pour un PC de test.
Changer l'URL en HTTP quand cloner:
git clone https://github.com/USERNAME/REPOSITORY.git
Mon problème est un peu différent : L'URL est définie lors de l'ajout d'un dépôt local existant à distance, en utilisant
git remote add Origin ssh://github.com/USERNAME/REPOSITORY.git
Pour résoudre ce problème, réinitialisez l'URL sur HTTP:
git remote set-url Origin https://github.com/USERNAME/REPOSITORY.git
BTW, vous pouvez vérifier votre URL en utilisant la commande:
git remote -v
Origin https://github.com/USERNAME/REPOSITORY.git (fetch)
Origin https://github.com/USERNAME/REPOSITORY.git (Push)
J'espère que cela aidera quelqu'un comme moi. :RÉ
Notez que (au moins pour certains projets) vous devez avoir un compte github avec une clé ssh.
Examinez les clés répertoriées dans votre agent d’authentification (ssh-add -l).
(si vous n'en voyez pas, ajoutez une de vos clés existantes avec ssh-add/chemin/à/votre/clé (par exemple: ssh-add ~/.ssh/id_rsa)
(Si vous n'avez pas de clé, commencez par en créer une. Voir: http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html ou tout simplement Google ssh-keygen)
Pour vérifier qu'une clé est associée à votre compte github:
Allez à: https://github.com/settings/ssh
Vous devriez voir au moins une clé avec une clé de hachage correspondant à l'un des hachages que vous avez vus lorsque vous avez tapé ssh-add -l il y a une minute.
Si vous ne le faites pas, ajoutez-en un, puis réessayez.
Cela fonctionne pour moi:
ssh-add ~/.ssh/id_rsa
J'ai eu une situation légèrement différente, j'étais connecté à un serveur distant et utilisais git sur le serveur. Lorsque j'ai exécuté une commande git, j'ai reçu le même message
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
J'ai corrigé le problème en modifiant le fichier/etc/ssh_config sur mon Mac. de
ForwardAgent no
à
ForwardAgent yes
J'ai rencontré le même problème parce que je pensais que la différence entreSSHetHTTPSest
https://github.com/USERNAME/REPOSITORY.git
ssh://github.com/USERNAME/REPOSITORY.git
J'ai donc changé deHTTPSàSSHen changeant simplement https://
en ssh://
rien à la fin de l'URL n'a été modifié.
Mais la vérité est:
https://github.com/USERNAME/REPOSITORY.git
[email protected]:USERNAME/REPOSITORY.git
Ce qui signifie que j'ai changé ssh://github.com/USERNAME/REPOSITORY.git
en [email protected]:USERNAME/REPOSITORY.git
cela fonctionne.
Erreur stupide mais espoir aide quelqu'un!
Sous Windows, assurez-vous que toutes vos applications sont d'accord sur HOME. De manière surprenante, Msys ne le fera PAS pour vous. J'ai dû définir une variable d'environnement car ssh et git ne parvenaient pas à se mettre d'accord sur l'emplacement de mon répertoire .ssh.
Les gars, voici comment cela a fonctionné pour moi:
1- Ouvrir le terminal et accéder à l'utilisateur [Voir l'image ci-jointe]
2- Ouvrez le dossier .ssh et assurez-vous qu'il ne contient aucun fichier tel que id_rsa ou id_rsa.pub, sinon, il ne sera pas correctement réécrit
3 - git --version [Vérifiez l’installation et la version de git]
4- git config --global user.email "votre identifiant de messagerie"
5- git config --global user.name "votre nom"
6- git config --list [assurez-vous que vous avez défini votre nom et votre email]
7-cd ~/.ssh
8- ssh-keygen, il vous invite à enregistrer le fichier, autorisez-le
9- cat ~/.ssh/id_rsa.pub [Accédez à votre clé publique et copiez la clé dans les paramètres gerrit]
Note: Vous ne devriez pas utiliser la commande Sudo avec Git. Si vous avez une très bonne raison d'utiliser Sudo, assurez-vous de l'utiliser avec chaque commande (il est probablement préférable d'utiliser su pour obtenir un shell en tant qu'utilisateur root à ce moment-là). Si vous générez des clés SSH sans Sudo et essayez ensuite d'utiliser une commande telle que Sudo git Push, vous n'utiliserez pas les mêmes clés que vous avez générées.
Les instructions GIT de base ne font pas référence aux éléments de clé SSH. En suivant certains des liens ci-dessus, j'ai trouvé une page d'aide de git qui explique, étape par étape, comment procéder pour différents systèmes d'exploitation (le lien détectera votre système d'exploitation et vous redirigera en conséquence):
http://help.github.com/set-up-git-redirect/
Il passe en revue tout ce qui est nécessaire pour GITHub et donne également des explications détaillées telles que "pourquoi ajouter une phrase secrète lors de la création d'une clé RSA". J'ai pensé le poster, au cas où cela aiderait quelqu'un d'autre ...
L'un des moyen le plus simple
aller au terminal-
git Push <Git Remote path> --all
Êtes-vous dans un environnement d'entreprise ? Est-il possible que vos variables système aient récemment changé? Par this _ SO réponse, les clés ssh résident à %HOMEDRIVE%%HOMEPATH%\.ssh\id_rsa.pub
. Donc, si %HOMEDRIVE%
a récemment changé, git ne sait pas où chercher votre clé, et donc tout le reste de l'authentification.
Essayez d'exécuter ssh -vT [email protected]
. Prenez note de l'emplacement du identity file
. Pour moi, il s'agissait de non pointant vers mon \Users\MyLogin
normal mais plutôt vers un lecteur réseau, en raison d'une modification des variables d'environnement transférées au niveau du réseau.
La solution? Étant donné que mon nouveau %HOMEDRIVE%
dispose des mêmes autorisations que mes fichiers locaux, je viens de déplacer mon dossier .ssh et l’appelle un jour.
Si vous avez plus d’une clé, vous devrez peut-être utiliser ssh-add private-keyfile
En plus de la réponse de Rufinus, le raccourci pour copier votre clé ssh dans le presse-papiers dans Windows est:
type id_rsa.pub | clip
Refs:
Je viens d’éprouver ce problème lors de la définition de mon projet actuel et aucune des solutions ci-dessus ne fonctionne. J'ai donc essayé de regarder ce qui se passait réellement sur la liste de débogage en utilisant la commande ssh -vT [email protected]. Je remarque que mon nom de fichier de clé privée ne figure pas dans la liste. alors renommer le nom de fichier de clé privée en 'id_rsa' faire le travail. espérons que cela pourrait aider.
C'est assez simple. Tapez la commande ci-dessous
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Générez la clé SSH. Ouvrez le fichier et copiez le contenu. Accédez à la page de configuration GitHub, puis cliquez sur la clé SSH. Cliquez sur Ajouter une nouvelle clé SSH et collez le contenu ici. Ça y est :) Vous ne devriez plus voir le problème.
J'ai frappé cette erreur parce que je devais donner à mon présent répertoire de travail les autorisations 700
chmod -R 700 /home/ec2-user/
J'obtenais une erreur similaire autorisation refusée (publickey) lorsque j'essayais de lancer un fichier makefile.
En guise d'alternative aux étapes SSH ci-dessus, vous pouvez installer l'application GitHub pour Mac native.
Cliquez sur Télécharger GitHub pour Mac à partir de - https://help.github.com/articles/set-up-git#platform-mac
Une fois la configuration terminée avec votre compte git hub (j'ai également installé les outils de ligne de commande de git hub, mais je ne sais pas si cette étape est requise ou non), puis j'ai reçu un courrier électronique -
[GitHub] Une nouvelle clé publique a été ajoutée à votre compte
et mon erreur a été corrigée.
Ça a fonctionné pour moi
ssh -i [your id_rsa path] -T [email protected]
Dans mon cas, j’ai réinstallé Ubuntu et le nom d’utilisateur est modifié. Dans ce cas, la clé ssh générée diffère également de la précédente.
Le problème résolu en copiant simplement la clé publique ssh actuelle, dans le référentiel. La clé sera disponible dans le /home/.ssh/id_rsa.pub
de votre utilisateur
Dans mon MAC, j'ai résolu ceci avec:
cp ~/.ssh/github_rsa ~/.ssh/id_rsa
Pour une raison quelconque, mon git s'est arrêté pour trouver la clé privée dans le fichier github_rsa
. Cela s'est passé dans un repo spécifique. Je veux dire que dans d'autres dépôts, Git a continué à fonctionner normalement.
Je pense que c'est un bug.
Je pourrais trouver ce comportement en cours d'exécution ssh -vT [email protected]
Cette erreur étrange, dans mon cas, était un symptôme de gnome-keyring-daemon
en nommant de manière incorrecte la clé pour laquelle elle nécessitait un mot de passe.
Je suis les étapes décrites ici et saisis le mot de passe via le terminal. L’erreur, appelée interface graphique confuse, a été résolue ... Voir: https://askubuntu.com/questions/3045/how-to-disable-gnome-keyring
Cela a fonctionné pour moi.
Votre clé publique est enregistrée dans le fichier id_rsa.pub; elle est la clé que vous avez téléchargée sur votre compte. Vous pouvez sauvegarder cette clé dans le presse-papier en lançant ceci:
pbcopy <~/.ssh/id_rsa.pub
Je recevais cette erreur parce que j'ai généré les clés SSH avec le mauvais email. Je pouvais me connecter en utilisant ssh, mais pas avec git. La solution consistait à régénérer les clés à l'aide de l'adresse de messagerie principale de mon compte github.
J'avais la même erreur. Mon problème était de mélanger à Sudo.
Je ne pouvais pas créer automatiquement le répertoire dans lequel je clonaisais sans préfixer la commande git clone avec Sudo. Quand j'ai fait cela, cependant, mes clés ssh n'étaient pas correctement référencées.
Pour résoudre ce problème, j'ai défini des autorisations via chmod sur le répertoire parent dans lequel je voulais contenir mon clone afin de pouvoir y écrire. Ensuite, j'ai exécuté git clone SANS le préfixe Sudo. Cela a ensuite fonctionné! J'ai changé les autorisations par la suite. Terminé.
La solution la plus simple à cela, lorsque vous essayez de transférer vers un référentiel avec un nom d'utilisateur différent, est la suivante:
git remote set-url Origin https://[email protected]/USERNAME/PROJECTNAME.git
J'ai pu surmonter ce problème en suivant les étapes ci-dessous de mon système Ubuntu. Comme je faisais des essais avec SSH sans mot de passe au système.
Sudo vi/etc/ssh/sshd_config
1) Commenté ci-dessous: #Changez en pour désactiver les mots de passe en texte clair tunnelés #PasswordAuthentication oui PasswordAuthentication no ----> a commenté ceci.
2) Ensuite, redémarrez le démon sshd comme indiqué ci-dessous.
service sshd redémarrer
Étapes pour Mac:
Tout d'abord, je vous recommande de vérifier certaines choses standard telles que:
service ssh redémarrer
C'était suffisant pour moi.
$ cd ~
$ cd .ssh
$ chmod 400 id_rsa
Utilisez le lien ssh de Github mais veillez à ne pas l'ajouter à ssh. Utilisez simplement ce que l'onglet ssh de git hub vous permet de cloner votre rapport.
Permettez-moi de partager mon expérience aussi,
J'essayais de cloner un projet du dépôt Gerrit où j'ai obtenu mes clés publiques dans les paramètres de compte.
Lors de la première tentative de création de git clone
, l'erreur suivante s'est produite:
Unable to negotiate with XX.XX.XX.XX port XXX: no matching key exchange
method found. Their offer: diffie-hellman-group1-sha1
J'ai compris que je devais passer l'option SSH -oKexAlgorithms=+diffie-hellman-group1-sha1
à git clone
.
J'espère que la variable d'environnement GIT_SSH_COMMAND
a fait le travail:
export GIT_SSH_COMMAND="ssh -oKexAlgorithms=+diffie-hellman-group1-sha1"
Mais git clone
n'a toujours pas commencé à fonctionner .. Maintenant, il lance le (sur le sujet):
Permission denied (publickey).
J'ai déjà des clés SSH et je ne voulais pas les régénérer. J'ai vérifié la connexion SSH avec l'hôte et tout s'est bien passé:
**** Welcome to Gerrit Code Review ****
Hi XXXXX, you have successfully connected over SSH.
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:
git clone ssh://[email protected]:xxx/REPOSITORY_NAME.git
J'étais un peu confus. J'ai recommencé et activé le débogage pour SSH via l'option -vvv
. Et j'ai vu ce qui suit:
debug1: read_passphrase: can't open /dev/tty: No such device or address
Il s’agissait peut-être d’une surcharge de la variable GIT_SSH_COMMAND
env. Ma clé était sécurisée par une phrase secrète (et je l’ai saisie lors de la vérification de la connexion à l’hôte git repo).
J'ai donc décidé de me débarrasser de la phasphrase. Une simple commande m'a aidé:
ssh-keygen -p
Ensuite, je suis entré dans mon mot de passe pour "l'ancien mot de passe" et j'ai juste tapé ENTER deux fois sur le "nouveau mot de passe" pour le laisser vide, c’est-à-dire sans mot de passe composé, et pour confirmer mon choix.
Après cela, j'ai reçu le référentiel fraîchement cloné sur mon disque local.
Exécutez le terminal en tant qu'administrateur.
Si le terminal ne peut pas voir votre .ssh, il renverra cette erreur.