web-dev-qa-db-fra.com

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

j'utilise github et j'ai déjà ajouté et synchronisé avec succès des fichiers sur mon ordinateur portable. 

depuis peu, j’obtiens " PuTTY Fatal Error: Disconnected: aucune méthode d’authentification prise en charge disponible " après avoir exécuté:

git pull Origin Master (ou Push)

toutefois

ssh [email protected] renvoie la réponse correcte: ERROR: Hi username! Vous vous êtes authentifié avec succès, mais GitHub ne fournit pas d'accès à Shell La connexion à github.com est fermée.

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

Aucune méthode d’authentification prise en charge disponible Vous devez connaître la variable d’environnement GIT_SSH, utilisée par git pour rechercher votre client ssh, si ssh ne fonctionne pas pour vous. L’installation de git peut utiliser plink.exe (via GIT_SSH) pour effectuer l’authentification. Si c'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 est chargée. Cela fournit la clé à plink.exe; sans cela, l'erreur ci-dessus se produira.

pas sûr de ce que plink.exe ou peagant.exe est .. 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 trop compliquer ma configuration, sinon nécessaire. 

88
Sonic Soul

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

Dans ce fichier, placez 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 lancerez la commande git Invite, puis s'en souviendrara jusqu'à ce que vous redémarriez votre ordinateur. Très pratique pour ne pas avoir à entrer votre mot de passe chaque fois que vous voulez 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
92
Rex Morgan

Utiliser TortoiseGit

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

Lieu mon varie. Sur un ordinateur, il était en C:\Program Files (x86)\Git\bin\ssh.exe

tortoisegit

21
Joseph Dykstra

"... pas sûr de ce que plink.exe ou peagant.exe est ..."

Depuis que vous le 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 totalement dominante sous Windows.

SSH 

Secure Shell (SSH) est un protocole de réseau cryptographique permettant de sécuriser communication de données. Il établit un canal sécurisé sur un système non sécurisé réseau dans une architecture client-serveur, connectant un client SSH application avec un serveur SSH. Les applications courantes incluent la télécommande connexion en ligne de commande, exécution de commande à distance, mais n’importe quel 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.

PuTTY

PuTTY est un émulateur de terminal gratuit et à source ouverte, une console série et application de transfert de fichiers en réseau. Il supporte plusieurs réseaux protocoles, y compris 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, les notes sur plink.exe et pageant.exe probablement ne s'appliquent pas si vous êtes sous Linux . Mastic comprend 

Plink: une interface de ligne de commande pour les back-ends de 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 correspondance la clé privée est présente à l'extrémité locale, le mot de passe est n °. plus nécessaire ... pour plus de sécurité, la clé privée elle-même peut être verrouillé avec une phrase secrète.

Donc, 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?) S'authentifient uniquement 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é. Elles doivent donc être gérées. 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 des guides indiquant "importer votre clé" et que vous avez constaté que cela fonctionnait, mais que cela ne fonctionne plus, voir 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.

10
woodvi

J'ai rencontré ce problème parce que mon GIT_SSH pointait vers la version TortoiseSVN de Plink.exe. Je l'ai changé pour qu'il pointe vers la version TortoiseGit, j'ai 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 une version 64 bits (située dans Program Files, pas Program Files (x86)).

Vérifiez deux fois votre GIT_SSH env var.

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

8
vaughan

Pour les utilisateurs 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 dépôt SSH car (à l'origine), c'était le seul moyen pratique d'empêcher TortoiseGit de demander votre mot de passe pour chaque action.

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

Mais TortoiseGit offre maintenant une meilleure gestion des mots de passe pour HTTPS, et Github recommande en fait d’utiliser des 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 de HTTPS sont:

  • Pas de gestion ou de génération de clés SSH
  • Pas besoin d'avoir pageant.exe constamment en marche (qui demande votre mot de passe à chaque lancement)
  • En utilisant TortoiseGit d’Australie, je trouve que les clones HTTPS sont 5 à 10 fois plus rapides que SSH.
5
Simon East

Mon problème était que j'essayais d'utiliser mon nom d'utilisateur github. Apparemment, lorsque vous utilisez Github (ou s'agit-il d'une chose Git?) , si vous utilisez l'authentification par clé, vous devez définir votre nom d'utilisateur sur git.

Je ne suis pas sûr de savoir pourquoi vous avez même besoin d’un nom d’utilisateur - peut-être que quelqu'un de plus informé pourra vous expliquer cela?

Si vous utilisez Pageant et obtenez le message d'erreur décrit dans la question après le redémarrage de votre ordinateur (ou sinon fermez et rouvrez Pageant):

Cette erreur peut être due au fait que Pageant n’a pas votre clé GitHub SSH chargée activement. 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. Concours ouvert. (Sous Windows, si Pageant est en cours d'exécution, une icône apparaît dans la barre d'état système. Double-cliquez dessus.)
  2. Cliquez sur le bouton Ajouter une clé, puis ajoutez votre clé GitHub SSH existante.

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

Étapes à suivre (en supposant que Pageant soit 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. (Cela peut se trouver dans le dossier de démarrage, qui peut être ouvert via 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 du fichier de clé SSH au champ "Cible".

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

4
Jon Schneider

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

2
atorres757

J'ai eu cette erreur en utilisant TortoiseGit pour cloner un dépôt de GitHub. Fixé en cliquant sur "Load PuTTY Key" et en sélectionnant un fichier de clé (* .pkk) dans le dialogue de clonage Git.

1
Zymotik

Même erreur, solution différente indiquée ici - Problème de connexion à GitHub sous Windows, même via PuTTY

1
Wayne Bloss

J'ai rencontré ce même problème, cependant la solution GIT_SSH a semblé fonctionner une fois pour moi. Après le redémarrage de l’ordinateur, j’ai réalisé que c’était autre chose, car j’ai pu cloner mes dépôts privés sans problème avec Git Bash ou Invite de commandes, mais pas dans Sublime Text 3 avec le plugin SublimeGit. Ma solution était simple et c’est ce que @BlueRaja - Danny Pflughoeft a mentionné, mais j’ai pensé que cela pourrait prendre une certaine direction;)

En gros, il vous suffit de modifier ~/.ssh/config et de vous assurer que le nom d'utilisateur est git. Vous pouvez également lui dire d’utiliser une clé SSH spécifique pour Github. Le fichier ~/.ssh/config se présente comme 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 tâches que je fais tout au long de la journée, mais si vous n'en avez qu'une, alors ce sera généralement ~/.ssh/id_rsa.pub comme Github explique ici .

Je sais que tout le monde a une solution différente, mais je vais laisser cela ici à quiconque peut rencontrer cet article sans solution. Bonne chance!

1
Winter

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

Oui, oui, je sais que c'est une erreur stupide, mais cela se produit et mérite d'être vérifié.

Utilisez git remote -v

0
cowlinator

Travaillé pour moi sous Windows 8: La variable GIT_SSH pointait sur plink.exe, Modifiée dans les paramètres système pour indiquer le binaire ssh, ce qui a résolu le problème. Pour connaître le chemin complet du ssh, lancez:

where ssh
0
Dmitriy

Vous pouvez obtenir plink & pageant à partir d'ici: http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/download.html

Ce sont des outils mastic.

0
eabrand