github: aucune méthode d'authentification prise en charge disponible

98

J'utilise github et j'ai ajouté et synchronisé avec succès des fichiers sur mon ordinateur portable dans le passé.

depuis peu, j'ai commencé à recevoir " PuTTY Fatal Error: Disconnected: Aucune méthode d'authentification prise en charge disponible " après l'exécution:

git pull origin master (ou push)

toutefois

ssh [email protected] renvoie la bonne réponse: ERREUR: Salut nom d'utilisateur! Vous vous êtes authentifié avec succès, mais GitHub ne fournit pas d'accès au shell. Connexion à github.com fermée.

après avoir fouillé sur github, j'ai trouvé ce morcel:

Aucune méthode d'authentification prise en charge disponible Vous devez être conscient de la variable d'environnement GIT_SSH, qui est utilisée par git pour trouver votre client parlant ssh, si ssh ne fonctionne pas pour vous. L'installation git peut utiliser plink.exe (via GIT_SSH) pour effectuer l'authentification. Si tel est le cas, assurez-vous que pageant.exe est en cours d'exécution et que la clé que vous avez créée pour github y est chargée. Cela fournit la clé de plink.exe; sans cela, l'erreur ci-dessus se produira.

je ne sais pas ce qu'est plink.exe ou peagant.exe .. et le fait que ssh [email protected] semble s'authentifier correctement me fait me demander quelle est la meilleure solution ici .. je ne veux certainement pas compliquer ma configuration sinon nécessaire.

Sonic Soul
la source

Réponses:

101

Vous pouvez créer un fichier nommé ".profile" dans votre répertoire personnel, pour moi c'est C: \ Users \ [utilisateur]

Dans ce fichier, mettez la ligne de code suivante:

GIT_SSH="/usr/bin/ssh.exe"

Cela définira la variable d'environnement GIT_SSH pour utiliser le client ssh inclus avec git.

Le script .profile est exécuté lorsque vous démarrez votre ligne de commande Git Bash.

Edit: Ceci est mon .profile. Il vous demandera votre mot de passe la première fois que vous démarrez l'invite de commande git, puis s'en souviendra jusqu'à ce que vous redémarriez votre ordinateur. Très pratique pour ne pas avoir à saisir votre mot de passe chaque fois que vous souhaitez faire quelque chose.

SSH_ENV="$HOME/.ssh/environment"
GIT_SSH="/usr/bin/ssh.exe"

function start_agent {
echo "Initializing new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cygwin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
Rex Morgan
la source
8
+1 Je n'ai eu que des problèmes lors de l'utilisation de Putty / Pageant pour les besoins ssh de git. L'utilisation du client ssh intégré fonctionne à merveille. Cela explique pourquoi ssh [email protected] retourne bien si vous l'exécutez vous-même, mais laisser git utiliser les outils configurés (Putty / Pageant) ne le fait pas.
enriquein
14
Pour moi, c'est juste GIT_SSH = "/ bin / ssh.exe" (sous Windows). Merci!
Martin Konicek
1
@Justin utilisez-vous l'invite mingw32?
Rex Morgan
2
En utilisant cygwin dans Windows 7, la réponse ci-dessus a fonctionné mais j'avais besoin de le GIT_SSHfaire .bash_profileet non.profile
Gabe
2
Dans mon cas avec Windows 10 utilisant Git Bash, c'estGIT_SSH="D:\Program Files\Git\usr\bin\ssh.exe"
PaulH
31

Utilisation de TortoiseGit

TortoiseGit> Paramètres ... Réseau ... Client SSH: C:\Program Files\Git\usr\bin\ssh.exe

Emplacement ma varier. Sur un ordinateur, il étaitC:\Program Files (x86)\Git\bin\ssh.exe

tortoisegit

Joseph Dykstra
la source
5
Merci. cela a fonctionné. Remarque: vous devrez peut-être chercher exactement où se trouve «ssh.exe» sur une machine donnée. pour moi, c'était C: \ Program Files \ Git \ usr \ bin \ ssh.exe (probablement sur une machine obsolète)
pestophage
10

"... je ne sais pas ce qu'est plink.exe ou peagant.exe ..."

Puisque vous demandez: plink & pageant font partie de la suite PuTTY, qui est une implémentation de SSH qui prend en charge Linux et Windows et est complètement dominante sur Windows.

SSH

Secure Shell (SSH) est un protocole de réseau cryptographique pour sécuriser la communication de données. Il établit un canal sécurisé sur un réseau non sécurisé dans une architecture client-serveur, connectant une application client SSH à un serveur SSH. Les applications courantes incluent la connexion par ligne de commande à distance, l'exécution de commandes à distance, mais tout service réseau peut être sécurisé avec SSH.

si vous avez déjà utilisé Telnet, c'est comme ça (mais plus sécurisé): cela vous permet d'accéder à distance au shell bash (ligne de commande) d'un hôte Linux.

Mastic

PuTTY est un émulateur de terminal gratuit et open-source, une console série et une application de transfert de fichiers réseau. Il prend en charge plusieurs protocoles réseau, notamment SCP, SSH, Telnet, rlogin ...

Sous Windows, c'est le logiciel dominant pour accéder à distance à la ligne de commande d'un hôte Linux sous le protocole SSH (ci-dessus). Sous Windows, les extensions .exe sont destinées aux exécutables. Donc, ces notes sur plink.exe et pageant.exe ne s'appliquent probablement pas si vous êtes sous Linux . PuTTY comprend

Plink : une interface en ligne de commande vers les back-ends PuTTY

Pageant : un agent d'authentification SSH pour PuTTY, PSCP et Plink

De ( http://en.wikipedia.org/wiki/Secure_Shell#Key_management )

Lorsque la clé publique est présente à l'extrémité distante et que la clé privée correspondante est présente à l'extrémité locale, la saisie du mot de passe n'est plus nécessaire ... pour plus de sécurité, la clé privée elle-même peut être verrouillée avec une phrase de passe.

Ainsi, github est hébergé sur une machine Linux et utilise SSH pour sécuriser la connexion. SSH s'authentifie avec des mots de passe ou des clés, de nombreux hôtes (github?) Ne s'authentifient qu'avec des clés. Votre configuration tente apparemment de s'authentifier avec une clé. Les clés et les hôtes ne sont pas un pour un: vous pouvez avoir deux clés pour le même hôte et / ou deux hôtes pour la même clé, ils doivent donc être gérés. Si vous êtes sous Windows, votre session SSH est probablement accessible via plink et vos clés sont probablement gérées par Pageant.

Importez la clé dont vous avez besoin à chaque fois que vous chargez Pageant. Si vous avez suivi les guides qui disaient "importez votre clé" et que vous avez vu que cela fonctionnait, mais que cela ne fonctionne pas maintenant, consultez le Chapitre 9: Utiliser Pageant pour l'authentification .

Un dernier conseil si vous êtes sous Windows: vous pouvez avoir plusieurs instances de la suite PuTTY installées par divers outils. TortoiseGit, par exemple, installe le sien.

woodvi
la source
8

J'ai rencontré ce problème car je GIT_SSHpointais vers la version TortoiseSVN dePlink.exe . Je l'ai changé pour pointer vers la version TortoiseGit, redémarré cmd et cela a fonctionné.

Je ne me souviens pas exactement, mais la version TortoiseSVN était peut-être une version 32 bits, et la version TortoiseGit était 64 bits (située dans Program Files, pasProgram Files (x86) ).

Vérifiez votre GIT_SSH env var.

Je préfère utiliser git avec normal cmd.exe(dans Console2 bien sûr)

Vaughan
la source
Vous vous souvenez correctement; J'ai eu le même problème, avec GIT_SSH pointant vers la version 32 bits TortoiseSVN de TortoisePlink.exe. Le déplacer vers la version de TortoiseGit a fonctionné.
nitwit
6

Pour les utilisateurs de TortoiseGit sous Windows

À l'origine, j'avais l'habitude de configurer la plupart de mes référentiels Github / Bitbucket à l'aide des URL de référentiel SSH car (à l'origine) c'était le seul moyen pratique d'empêcher TortoiseGit de vous demander votre mot de passe à chaque action.

Mais installer TortoiseGit de cette façon était toujours très douloureux. Chaque fois que ça m'a pris des heures pour configurer correctement, car les options d'installation par défaut ne semblaient jamais fonctionner (même à partir de 2016, sheesh!).

Mais TortoiseGit a maintenant une meilleure gestion des mots de passe pour HTTPS, et Github recommande en fait d'utiliser les URL HTTPS dans la mesure du possible.

URL SSH: [email protected]:User/repo-name.git

URL HTTPS: https://github.com/User/repo-name.git

Les avantages du HTTPS sont:

  • Pas de gestion ou de génération de clés SSH
  • Pas besoin d'avoir pageant.exe constamment en cours d'exécution (qui demande votre mot de passe à chaque lancement)
  • En utilisant TortoiseGit d'Australie, je trouve que les clones sur HTTPS sont 5 à 10 fois plus rapides que SSH
Simon Est
la source
+ 'git config --global http.sslVerify false'
Mike
5

Si vous utilisez Pageant et que vous obtenez l'erreur décrite dans la question après le redémarrage de votre PC (ou la fermeture et la réouverture de Pageant):

L'erreur peut être due au fait que Pageant n'a pas chargé votre clé SSH GitHub de manière active. Par défaut, Pageant ne charge PAS automatiquement les clés de la session précédente au démarrage.

Pour charger la clé:

  1. Ouvrez Pageant. (Sous Windows, si Pageant est en cours d'exécution, il y aura une icône dans la barre d'état système. Double-cliquez dessus.)
  2. Cliquez sur le bouton Ajouter une clé, puis ajoutez votre clé SSH GitHub existante.

Pour éviter ce problème à l'avenir, vous pouvez configurer Pageant pour charger automatiquement votre clé lors de son démarrage. (Pageant vous demandera automatiquement un mot de passe si votre clé est protégée par mot de passe.)

Étapes à suivre pour ce faire (en supposant que Pageant est déjà configuré pour s'exécuter au démarrage de Windows):

  1. Recherchez le raccourci utilisé par Windows pour exécuter Pageant au démarrage de Windows. (Il peut être dans le dossier Démarrage, qui peut être ouvert par Démarrer> Exécuter> shell:startup)
  2. Dans la boîte de dialogue Propriétés du raccourci, ajoutez le chemin complet et le nom de fichier du fichier de clé SSH dans le champ «Cible».

Référence et détails complets: http://blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html

Jon Schneider
la source
4

Mon problème était que j'essayais d'utiliser mon nom d'utilisateur github. Apparemment, lorsque vous utilisez Github (ou est-ce une chose Git?) , Si vous utilisez l'authentification par clé, vous devez définir votre nom d'utilisateur surgit .

Je ne sais pas pourquoi vous avez même besoin d'un nom d'utilisateur - peut-être que quelqu'un de plus compétent peut l'expliquer?

BlueRaja - Danny Pflughoeft
la source
Lors du clonage d'un référentiel privé, ce serait une URL telle que [email protected]: username / Repository.git. Je ne suis pas tout à fait sûr de la science derrière cela non plus, mais il semble que git soit un nom d'utilisateur générique pour chaque compte Github
Hiver
1
PLink / Pageant fonctionne très bien. C'est le problème réel, et utiliser quelque chose comme ça ssh://[email protected]/myname/repo.gitfonctionnera très bien. Bon travail. Quant à savoir pourquoi, je suppose que c'est pour verrouiller la sécurité. L'utilisateur 'git' a sa connexion désactivée, donc personne ne peut pénétrer dans le système de cette façon. Ils doivent avoir une clé valide pour même parler à Github, et une fois qu'ils ont une clé valide, ils peuvent la
comparer
2

Sur ma machine Windows 7 exécutant Github pour Windows en utilisant git version 1.8.3.msysgit.0. J'ai trouvé que la mise à jour de ma variable d'environnement système GIT_SSH vers C: \ Program Files (x86) \ Git \ bin \ ssh.exe semblait faire l'affaire. Cela a également résolu mon problème de contact avec le dépôt git d'OpenShift.

atorres757
la source
2

A travaillé pour moi sur Windows 8: la variable GIT_SSH pointait vers plink.exe, l'a modifiée dans les paramètres système pour pointer vers le binaire ssh, et cela a résolu le problème. Pour connaître le chemin complet vers le ssh, exécutez:

where ssh
Dmitriy
la source
2

Pour résoudre ce problème, c'est ce que j'ai fait.

J'utilisais Git Bash sur Windows 10

J'ai commencé Pageant, j'ai appuyé sur Ajouter une clé,

entrez la description de l'image ici

navigué vers le dossier C: \ Users \ username \ .ssh et choisi ma clé

entrez la description de l'image ici

J'essaye ensuite de faire un push git et cela a fonctionné cette fois.

Lismore
la source
N'oubliez pas que vous devrez probablement le faire chaque fois que vous redémarrerez votre PC Windows - vous pouvez mettre Pageant dans votre dossier de démarrage en tant que raccourci avec le bon argument de ligne de commande vers votre fichier de clé privée, mais si vous avez défini un mot de passe sur votre clé privée lorsque vous l'avez créée, vous devrez vous rappeler de cliquer avec le bouton droit de la souris sur l'icône Pageant dans votre barre d'outils, de sélectionner «Ajouter une clé» et de la remplir après chaque redémarrage.
webbje
1

J'ai rencontré ce même problème, mais la solution GIT_SSH a semblé fonctionner une fois pour moi. Après un redémarrage de l'ordinateur, j'ai réalisé que c'était autre chose, car j'étais capable de cloner mes dépôts privés sans problème en utilisant Git Bash ou Command Prompt, mais pas dans Sublime Text 3 avec le plugin SublimeGit. Ma solution était simple et c'est en fait ce que @BlueRaja - Danny Pflughoeft mentionné mais je pensais que cela pourrait utiliser une direction;)

Fondamentalement, il vous suffit de modifier ~/.ssh/configet de vous assurer que le nom d'utilisateur est git. Vous pouvez également lui dire d'utiliser une clé SSH spécifique pour Github - Mon ~/.ssh/configfichier ressemble à ce qui suit:

Host gh
    Hostname github.com
    User git
    IdentityFile ~/.ssh/github_rsa.pub

J'ai une clé spécifique pour Github en raison du nombre d'autres choses que je fais tout au long de ma journée, mais si vous n'en avez qu'une, ce sera généralement ~/.ssh/id_rsa.pubcomme Github l'explique ici .

Je sais que tout le monde a une solution différente, mais je laisserai ceci ici pour tous ceux qui pourraient rencontrer cet article sans solution. Bonne chance!

Hiver
la source
1

J'ai eu cette erreur lors de l'utilisation de TortoiseGit pour cloner un référentiel à partir de GitHub. Correction en cliquant sur "Load Putty Key" et en sélectionnant un fichier de clé (* .pkk) dans la boîte de dialogue de clonage de Git.

Zymotik
la source
0

J'ai eu ce problème (direct ssh a fonctionné, mais git pull a échoué) car ma télécommande git n'est pas ce que je pensais.

Oui, oui, je sais que c'est une erreur stupide, mais cela arrive et cela vaut la peine d'être vérifié.

Utilisation git remote -v

cowlinator
la source
0

J'ai eu un problème similaire après la mise à jour de GitExtensions vers la version 3.3.0.7719

D'une manière ou d'une autre, mes paramètres d'authentification ont été rétablis pour utiliser PuTTY au lieu d'OpenSSH.

Dans cette version, voici le menu que j'ai utilisé pour réactiver OpenSSH:

entrez la description de l'image ici

essuyer
la source