web-dev-qa-db-fra.com

Git Bash et Pageant n'utilisent pas de clés

J'ai Git pour Windows (configuré pour MinTTY et PuTTY\plink.exe) Et PuTTY installé, et j'essaie de le faire fonctionner avec un référentiel Bitbucket. J'ai ma clé SSH chargée, dans Pageant et sur le site Web, et pourtant, chaque fois que j'essaie de faire quelque chose qui nécessite de tirer/pousser:

Permission denied (publickey).
fatal: Could not read from remote repository.

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

Lorsque je lance le ssh -v [email protected] Suggéré, il utilise id_rsa Mais aucune de mes autres clés dans ~/.ssh. Si vous essayez d'utiliser ssh-add ~/.ssh/bitbucket_rsa, Vous obtenez:

Could not open a connection to your authentication agent.

J'ai lu des informations sur la configuration de PuTTY pour autoriser le transfert, mais c'est généralement là que se termine le conseil. Je viens donc de définir cette option pour la session par défaut et de l'enregistrer à cet emplacement.

J'ai exécuté ps pour vérifier quelles applications étaient en cours d'exécution, et ssh-agent N'en faisait pas partie. Lancer eval 'ssh-agent' Lance le démon, mais cela ne fait aucune différence.

44
Dissident Rage

C'est ce qui a fini par travailler pour moi.

BTW, j'ai aussi Bash sous Windows, mais je ne pense pas que cela compte.

J'avais Sourcetree installé et pointé sur son dossier avec plink.exe, puttygen.exe, & pageant.exe. Vous pouvez également télécharger et installer ces fichiers séparément.

Configurer la variable d'environnement Windows

  1. Tapez Environment dans votre barre de recherche Windows 10. Sinon, ouvrez Propriétés système/Paramètres système avancés et recherchez vos variables d’environnement.
  2. Ajouter une nouvelle variable système
    • Nom de la variable : GIT_SSH
    • Valeur de variable : chemin complet du fichier plink.exe (Vous pouvez également avoir pageant.exe Et puttygen.exe Dans le même dossier).
      • Le mien était: C:\Program Files (x86)\Atlassian\SourceTree\tools\PuTTY\plink.exe
      • Remarque : Le plus récent Sourcetree (v2 sous Windows) utilise des répertoires versionnés, donc chaque fois que vous le mettrez à jour, vous devrez le mettre à jour, ce qui est pénible. . Il est préférable de simplement faire une copie de plink.exe Et de la placer quelque part qui ne changera pas.
      • Si l'un des programmes ci-dessus est en cours d'exécution, vous pouvez toujours ouvrir le gestionnaire de tâches, rechercher le processus et ouvrir l'emplacement du dossier pour obtenir le chemin d'accès à plink.exe.

Profit

Veillez à redémarrer vos terminaux afin qu’ils obtiennent les variables d’environnement mises à jour. Pour moi, je courais Bash pour mon terminal intégré dans Visual Studio Code , je devais donc redémarrer Visual Studio Code. Il aurait sûrement été acceptable de fermer le terminal intégré et d’en ouvrir un nouveau, mais je souhaitais également que la fonctionnalité git intégrée à Visual Studio Code fonctionne également.

Remarque

Étant donné que Sourcetree est installé, j'ai pu utiliser son interface pour cloner via Bitbucket et Push via son interface, mais le fait d'essayer via des terminaux ne fonctionnait pas, car ils utilisaient un ensemble d'informations d'identification différent.

Une autre chose intéressante à souligner est que si vous naviguez dans la configuration git de votre projet située à l'emplacement suivant: ./.git/config, Vous pouvez écarter votre télécommande de l'utilisation de SSH à HTTPS. Vous pouvez récupérer les valeurs suivantes dans Overview sur votre référentiel Bitbucket.

J'ai remarqué que lors de l'utilisation de HTTPS sous Windows 10, il utilisait ensuite Windows Credential Manager (j'ai essayé d'y ajouter mes informations d'identification en essayant de résoudre ce problème moi-même, mais j'utilisais toujours SSH, donc cela importait peu). avec le référentiel distant, il vous demandera vos informations d'identification et les stockera pour une utilisation ultérieure dans Windows Credential Manager :)

J'espère que l'une de ces méthodes fonctionnera pour vous. La méthode HTTPS ignorera toute la génération de clés SSH et sera transférée dans Bitbucket, mais elle me semble plus sécurisée et plus portable.

Mac OS

Vous devrez peut-être ajouter votre clé au trousseau, en particulier si vous utilisez du code Visual Studio et si vous avez une phrase secrète sur votre clé (actuellement, le code Visual Studio ne vous permettra pas de taper une phrase secrète).

ssh-add -K ~/.ssh/id_rsa

https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#adding-your-ssh-key-to -the-ssh-agent

Ajouts

Je ne suis pas sûr que cela puisse être utile à quelqu'un, mais je suis en train de suivre la procédure de prise en charge de SSH dans Visual Studio Code pour Windows: https://github.com/Microsoft/vscode/issues/1368 =.

82
CTS_AE

Vous mélangez les choses.

PuTTY et Pageant ne sont pas compatibles avec les outils OpenSSH et ne peuvent pas communiquer ensemble. PuTTY ne peut pas lire les clés de votre agent OpenSSH et OpenSSH ne peut pas lire les clés de Pageant. Le format de la clé est également différent. C'est une mauvaise chose dans ce monde, mais il n'y a pas de solution à l'horizon.

De plus, "transfert d'agent" est différent de "utiliser un agent".

Si vous configurez Git avec plink (assurez-vous de l'avoir fait), vérifiez si votre Pageant est en cours d'exécution et si l'option "Tentative d'authentification avec Pageant" est cochée dans votre profil enregistré dans PuTTY sous Connexion → - SSH Auth.

Si cela ne résout pas vos problèmes, postez un journal de débogage à partir de PuTTY.

4
Jakuje

PuTTY n’a pas besoin de travailler avec Bitbucket en ssh: la version OpenSSH (C:\prgs\git\PortableGit-2.7.0-64-bit\usr\bin\ssh.exe) emballé dans git-for-windows fonctionne très bien.

Assurez-vous que, dans votre session Shell actuelle, HOME est défini sur %USERPROFILE% (une PortableGit-2.7.0-64-bit\git-cmd.exe est suffisant pour ouvrir un CMD standard correctement configuré).

Créez un fichier nommé config dans %USERPROFILE%\.ssh (comme dans étape 3 de la documentation Atlassian ):

Host bitbucket.org
 IdentityFile ~/.ssh/bitbucket_rsa

(Vous pouvez aussi utiliser "/C/path/to/bitbucket_rsa ".)

Cela permet d’utiliser une URL SSH comme bitbucket.org:user/repo. Testez-le avec ssh -Tv bitbucket.org (après avoir ajouté votre clé publique à votre compte Bitbucket, bien sûr).

Remarque: ssh-agent n'est nécessaire que si votre clé privée est protégée par une phrase secrète.

Mise à jour 2018, deux ans plus tard: " Dites adieu à PuTTY car Microsoft ajoute un client OpenSSH à Windows 1 ". Il est vraiment temps de laisser PuTTY de côté: plus besoin d'un format de clé (ppk) différent et solution propriétaire , maintenant que OpenSSH est officiellement distribué en tant que fonctionnalité Windows (en version bêta pour l'instant, T1 2018).

2
VonC

Ce qui a fonctionné pour moi avec Git Bash pour Windows 7: convertir un fichier .pkk au format OpenSSH:

https://www.simplified.guide/PuTTY/convert-ppk-to-ssh-key

Ajouter la clé générée à IdentityFile .ssh/config chez Git Bash, par exemple:

Host repository
     # My converted OpenSSH key
     IdentityFile /c/Users/me/open-ssh.pri

     # This repository server uses a specific name, not usually needed.
     User git

     # This repository server uses a specific port, not usually needed
     Port 8322

     # Repository server full name
     Hostname repo.server.com
1
apmattil

Pour accéder aux clés SSH chargées dans Pageant depuis Git Bash, fourni avec Git sous Windows, vous pouvez utiliser ce programme . Le processus d'installation est décrit sur la page liée.

1
ivangretsky