Question Comment dire à Git pour Windows où trouver ma clé RSA privée?


Ma configuration de Git fonctionne correctement sous Linux, mais lorsque j’essaie de configurer Windows (avec Git pour Windows et TortoiseGit), Je ne sais pas où mettre ma clé SSH privée (ou, mieux encore, comment dire ssh où il est situé). J'utilise l'option ssh.exe standard lors de l'installation de Git pour Windows. La configuration s’effectue correctement si j’autorise l’authentification par mot de passe (au lieu de RSA) sur le serveur.


461
2017-10-25 16:45


origine


J'ai le même problème, je peux ssh dans ma boîte de dev en utilisant une clé publique comme "root" en utilisant le programme "Git Bash" installé avec "Git pour Windows" mais je ne peux pas me connecter en tant que "git" avec mon clé même si j'ai copié mon fichier "allowed_keys" de ma "racine" vers mon utilisateur "git" et définir correctement les propriétaires et les autorisations. Pourquoi ne puis-je pas me connecter en tant que "git" lorsque "root" fonctionne avec exactement le même fichier "registered_keys". Au lieu de cela, "git" transmet toutes les clés privées, qui sont exactement les mêmes que celles qui fonctionnent avec "root", et demande un mot de passe. C'est un serveur Centos 5.5 au fait. - Jarrod Roberson
@fuzzy lollipop: Avez-vous les autorisations appropriées sur le fichier allowed_keys de votre utilisateur git? Il devrait s'agir de chmod 600 et devrait appartenir à l'utilisateur git. Si cela appartient à l'utilisateur root, cela ne fonctionnera pas - Dan McClain
oui tous les fichiers et répertoires sont les bons propriétaires et permissions - Jarrod Roberson


Réponses:


Pour Git Bash

Si vous exécutez msysgit (je suppose que vous l'êtes) et que vous souhaitez exécuter Git Bash (je le recommande plutôt à TortoiseGit, mais je m'appuie davantage sur la CLI que sur l'interface graphique), vous devez déterminer quel est votre répertoire personnel pour Git. Bash en le lançant puis en tapant pwd (Sous Windows 7, ce sera quelque chose comme C:\Users\phsr Je pense). Pendant que vous êtes à Git Bash, vous devriez mkdir .ssh.

Une fois que vous avez le répertoire personnel et un .ssh Sous ce dossier, vous souhaitez ouvrir PuTTYgen et ouvrir la clé (fichier .ppk) créée précédemment. Une fois votre clé ouverte, vous voulez sélectionner Conversions -> Export OpenSSH key et enregistrez-le HOME\.ssh\id_rsa. Une fois que vous avez la clé à cet endroit, Git Bash la reconnaîtra et l’utilisera.

Remarque: Les commentaires indiquent que cela ne fonctionne pas dans tous les cas. Vous devrez peut-être copier la clé OpenSSH pour Program Files\Git\.ssh\id_rsa (ou Program Files (x86)\Git\.ssh\id_rsa).

Pour TortoiseGit

Lorsque vous utilisez TortoiseGit, vous devez définir la clé SSH via indications de pacey. Vous devez le faire pour chaque référentiel avec lequel vous utilisez TortoiseGit.


459
2017-11-05 17:18



Les instructions de pacey pour tortoisegit ne fonctionneront pas tant que vous n’aurez pas le référentiel (car le paramètre de configuration 'remote' n’apparaît que si vous agissez sur un référentiel), et vous ne pourrez probablement pas obtenir le référentiel si vous le pouvez ' t authentifiez-vous pour pouvoir cloner à partir de l'origine. Rusé! - Kylotan
Avec GitBash, j’ai trouvé que je devais copier mon ~/.ssh/id_rsa déposer dans Program Files\Git\.ssh\id_rsa - ce qui était un peu déroutant, mais maintenant, IntelliJ et Windows cmd peuvent transmettre aux référentiels git qui utilisent l’authentification par clé. - JP.
Également. Je viens d'installer git-for-windows, je l'exécute à partir de cmd.exe. J'avais besoin de mettre les fichiers id_rsa et id_rsa.pub dans c:\program files (x86)\Git\.ssh . le .ssh dir était déjà présent. Merci, JP. - Cheeso
Le deuxième paragraphe était doré. :) - Bjørn
@ Damon: ça devrait être id_rsa sans l'extension. C'est le nom du fichier, ce n'est pas un répertoire - Dan McClain


À l'aide du client SSH intégré fourni avec Git pour Windows, vous devez configurer la variable d'environnement HOME afin que le client Git SSH puisse trouver la clé.

Par exemple, sur un Windows Vista l'installation, cela se ferait en émettant setx HOME c:\Users\admin\ sur la ligne de commande.

Cela a fait ma journée et résolu le problème avec Git à condition que votre clé privée ne soit pas protégée par mot de passe. Si vous voulez utiliser ssh-agent, vous pouvez probablement exécuter ssh-agent cmd.exe (bien que je ne l'aie jamais fait) et ssh-add comme d'habitude.

Notez que tous les outils Git / SSH sont supposés être exécutés à partir d’un cmd.exe afin de ne pas cligner une fenêtre.

Si cela ne fonctionne pas correctement, utiliser plink peut probablement être obtenu en ajustant GIT_SSH. Reportez-vous à tous les tutoriels SVN + ssh; c’est la même tuyauterie que vous devez installer.


101
2017-11-05 18:24



C'est ce que je cherchais depuis que j'essaye d'utiliser l'invite de commande Windows, pas git bash. - John Ruiz
Belle solution facile mais il aurait été difficile de comprendre sans cela! - thaddeusmt
Il est également important de ne pas laisser de blancs entre HOME = et c: \ ... La solution d'Oct a fait l'affaire pour moi. :-) - Lutz
le setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use cmd` à la place. - trejder
+1 GIT_SSH=c:\pathto\plink.exe - Nick Grealy


Vous pouvez spécifier l'emplacement de la clé pour TortoiseGit de la manière suivante:

  • Ouvrez une fenêtre de l'explorateur.
  • Ouvrez le menu contextuel et naviguez TortoiseGit → Réglages
  • Dans la fenêtre maintenant ouverte, accédez à Git → Éloigné
  • Définissez le chemin d'accès à votre clé PuTTY dans la zone de saisie correspondante.

Une capture d'écran est ci-dessous:

Enter image description here


48
2017-11-05 14:07



De plus, si vous devez convertir votre clé privée au format ".ppk" à partir d'un autre format, vous pouvez suivre CE - Tariq M Nasim
Cela a fonctionné pour moi. - Maxim Eliseev
Git> Remote n'apparaît qu'une fois le référentiel cloné. - Steve Pitchers
Une solution beaucoup plus simple consiste à tout configurer pour que tout fonctionne correctement dans git (en utilisant openSSH), puis dites à TortoiseGit d’utiliser le fichier ssh.exe utilisé par git. Voir stackoverflow.com/a/33328628/318317 De cette façon, il vous suffit de résoudre ce problème une fois. - Daniel Rose


Aucune des réponses précédentes n'a fonctionné pour moi. Voici ce qui a fonctionné pour moi à la fin. C'est en fait assez simple, si vous savez quoi taper. Il n'a pas besoin de Mastic.

  • Ouvrez une invite Git Bash
  • Tapez 'ssh-keygen'
    • Accepter l'emplacement par défaut
    • Choisissez un mot de passe vide (appuyez simplement sur 'Entrée' pour toutes les questions ')
  • Maintenant, copiez la clé publique sur votre serveur, par exemple: scp ~ / .ssh / id_rsa.pub someuser@someserver.com: ~

C'est le peu sur votre propre ordinateur fait. À présent ssh dans le serveur de destination, puis faites

mkdir -p ~/.ssh
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
rm ../id_rsa.pub

C'est tout! Vous avez terminé! À partir de Git Bash, procédez comme suit pour tester:

ssh someuser@someserver.com ls

S'il répertorie les fichiers de votre répertoire personnel sur le serveur Git, vous avez terminé!

Pour GitHub, vous n'avez pas d'accès shell à leur serveur, mais vous pouvez télécharger la clé en utilisant leur site web. Ainsi, pour le bit 'maintenant copier sur votre serveur', faites:

  • Dans Git Bash, tapez 'cat ~ / .ssh / id_rsa.pub', sélectionnez le résultat et copiez-le dans le presse-papiers.
  • Sur le site Web GitHub, allez dans «Paramètres du compte», «Clés SSH et GPG», cliquez sur «Nouvelle clé SSH», puis collez la clé.

45
2018-04-25 01:32



Ne créez pas de clés sans phrases secrètes. C'est comme mettre votre mot de passe dans un fichier texte, sauf que tout le monde connaît l'emplacement par défaut des clés privées. - GregB
Vous répondez à la mauvaise question. Le Q est comment pointer sur une clé privée existante. - Orangutech
@ GregB, je le regarde comme ceci: tout serveur pour lequel je crée une clé sans mot de passe est aussi sécurisé que mon ordinateur portable, c'est une extension du périmètre de sécurité de mon ordinateur portable. En fait, même pas, puisque mon répertoire personnel est crypté ;-) Donc, il est aussi sécurisé que la partition domestique cryptée de mon ordinateur portable, ce qui est "assez bon" pour sécuriser l'accès à github, à mon avis. (qui peut varier de votre avis bien sûr!) - Hugh Perkins
@ GregB Ne tombez pas dans la paranoïa! :] Bien sûr, utiliser des clés protégées par mot de passe est beaucoup plus sécurisé que d’utiliser sans mot de passe, mais il est tout aussi simple de prétendre que la clé sans mot de passe est cassée, car enregistrer des mots de passe dans un fichier texte est une fausse évidence. J'ai vu de nombreux guides, qui encouragent les utilisateurs à utiliser des clés protégées par mot de passe, mais je n'ai jamais vu aucune réclamation affirmant que leur utilisation sans mot de passe n'était pas du tout sécurisée. De plus, certains systèmes ne prennent pas en charge les solutions permettant de mémoriser le mot de passe d'une clé, saisi par les utilisateurs, et le demandent chaque fois que la clé est utilisée. Ce qui rend l'utilisation de clés SSH inutile dans cette situation. - trejder
Dans l'intérêt de la conversation, qui s'est écartée de la question initiale, les clés SSH sont certainement plus sécurisées sur le plan cryptographique que les mots de passe, mais cette sécurité est compromise si les clés SSH ne sont pas cryptées. Mon approche personnelle consiste à déverrouiller mes clés au début de la journée en utilisant un agent SSH, qui conserve ensuite les clés déchiffrées en mémoire, de sorte que je n'ai pas besoin de ressaisir le mot de passe tout au long de la journée. Comme @Hugh Perkins commente, et je paraphrase, vous connaissez tous vos exigences en matière de sécurité mieux que moi / nous :). - GregB


Si vous utilisez msysgit avec les outils OpenSSH, vous devez soit créer ~/.ssh/id_rsa, ou créez une configuration Git dans ~/.ssh/config qui pointe vers votre clé.

Voici un exemple de configuration Git pour Bitbucket qui utilisera le nom d'utilisateur correct et une clé autre que la clé par défaut (si vous conservez une clé pour les connexions SSH et une autre pour les comptes Git).

~ / .ssh / config:

Host bitbucket.org
    Hostname bitbucket.org
    User git
    IdentityFile /C/keys/yourkey.key

Une fois dans Git Bash, vous pouvez exécuter deux commandes pour ajouter votre clé à l'agent ssh de votre session en cours afin d'éviter d'avoir à saisir à plusieurs reprises le mot de passe de la clé.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key

34
2018-04-11 06:34



J'ai fait cela, mais pour github.com: hôte github.com IdentityFile ~ / .ssh / github_rsa - Sarah Vessels
Si vous avez un espace dans votre chemin, vous devez utiliser des guillemets: IdentityFile "/ C / My Keys / key" - r03
Je préfère cette façon, parce que cela m'a permis de connecter rapidement des clés existantes d'autres PC - Kirill Gusyatin
Mon .gitconfig a des sections. Sous quelles sections devrais-je mettre ces hôtes? - Steve Yakovenko


Je viens de définir% HOME% =% HOMEPATH%

Cela présente l'avantage de fonctionner pour tous les utilisateurs connectés au système (ils ont chacun un dossier .ssh séparé).

Dans Vista:

  1. Clic droit sur Ordinateur
  2. Choisissez Propriétés
  3. Cliquez sur Paramètres système avancés
  4. Cliquez sur Variables d'environnement
  5. Dans la section inférieure (Variables système), cliquez sur Nouveau.
  6. Pour le type de nom de variable: HOME
  7. Pour le type de chemin d'accès variable:% HOMEPATH%
  8. Cliquez sur OK

14
2017-10-12 01:26



Dans mon cas, j'ai ajouté HOME =% USERPROFILE% - igor
Notez que %HOMEPATH% ne contient pas la lettre de lecteur, donc si votre source n'est pas allumée C: vous devez prévoir C: à %HOME%. - Graeme Perrow


Votre clé privée doit être ajoutée à l'agent SSH sur votre poste de travail. La manière dont vous réaliserez cela dépendra du client git que vous utilisez. Cependant, puTTY et son agent associé (pageant) peuvent vous aider, voici le lien vers les fichiers binaires officiels et la source:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


7
2017-10-25 17:38



J'ai indiqué ci-dessus que j'utilise Git pour Windows et que j'utilise ssh.exe (emballé avec / git) au lieu de mastic. Il doit y avoir une pratique standard pour ajouter une clé privée, je n'arrive pas à trouver comment. Changer de logiciel peut certes me permettre de me connecter, mais il doit y avoir un moyen de le faire avec la configuration standard de Git, non? - binaryorganic
Désolé je ne travaille pas sur windows, seulement linux. Mais la clé doit être dans votre agent SSH. Y at-il un agent.exe ou quelque chose du genre? - Declan Shanaghy
Oui, la configuration était un gâteau sur le côté linux. Mais malheureusement, je dois le faire fonctionner sous Windows. Il existe plusieurs fichiers exécutables liés à ssh dans le dossier git / bin sous Windows (ssh, ssh-add, ssh-agent, ssh-keygen et ssh-keyscan), mais je ne sais pas comment en faire. faire n'importe quoi. Ils clignent simplement une fenêtre cmd ouverte et fermée tout de suite. Je suis perplexe. - binaryorganic
Pageant résout effectivement le problème pour moi - j'ai un raccourci dans le dossier de démarrage de mon menu Démarrer (C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) pointant vers "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", de sorte qu'il charge mes clés SSH au démarrage, ce qui permet à GIT de "fonctionner": o) - Owen Blacker
@ OwenBlacker OMFG! Vous devrait définitivement écrire ce commentaire en taille réelle réponse! C'est la seule solution ici, cela m'a en fait aidé et résolu mon problème! Dommage, que je ne puisse vous donner que +1! :] - trejder


OK, j'ai regardé la suggestion de ..

Mais placer dans mes dossiers privés des clés SSH privées ne me paraissait pas une bonne idée. Je me suis donc mis à chercher où était le hôte connu.

Donc, si vous voulez protéger correctement votre clé SSH, vous devez la placer dans le répertoire suivant:

Pour Windows 7, 8 et 8.1 32 bits:

C: \ Utilisateurs \\ AppData \ Local \ VirtualStore \ Program Files \ Git \

Pour Windows 7, 8 et 8.1 64 bits:

C: \ Utilisateurs \\ AppData \ Local \ VirtualStore \ Program Files (x86) \ Git \


4
2017-09-08 10:04



Salut Bas. Je pense que vous devriez supprimer votre question et demander ou donner sur Super utilisateur parce que ce n'est pas le bon site pour ce genre de question / réponse :-) - Ian Macintosh
Ce n'est pas quistion de moi juste une suggestion - Bas van den Dikkenberg
C'était la solution la plus simple sur ma machine Win7. Comme toi, j'ai cherché known_hosts. Bien sûr, c'était dans C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh. En plaçant mon fichier de clé (id_rsa) dans ce répertoire, ssh a pu le trouver sans se plaindre. J'ai lu un peu - c'est ainsi que Windows gère les logiciels (hérités) qui tentent d'écrire dans des zones interdites (telles que "C: \ Program Files \"), de sorte que ssh de Git ignore complètement qu'il écrit dans le répertoire VirtualStore, Windows gère cela de manière transparente. Au moins ces fichiers appartiennent à un utilisateur! - DaveGauer


Dans mon cas, j'utilisais Git pour Windows dans le conteneur Docker windowsservercore.

Mon Git a été installé par Chocolaté à C:\Program Files\Git.

J'ai dû mettre à jour le fichier C:\Program Files\Git\etc\ssh\ssh_config avec ça:

Host example.com
   Identityfile ~/.ssh/id_rsa

Ensuite, je pouvais utiliser la clé de C:\Users\<user>\.ssh\id_rsa

Si vous utilisez Git pour Windows avec OpenSSH pour Windows. Git utilise toujours son propre ssh.

De plus, si vous envisagez d'utiliser ssh-keyscan host.com > known_hosts OpenSSH, faites attention car la sortie de la tuyauterie stdout de keyscan (sous Windows) modifie le codage en UCS-2, mais OpenSSH ne peut lire qu’UTF-8! Alors assurez-vous de changer le known_hosts encodage de fichier.


4
2017-11-02 15:27



Cela a aidé, mais pour quiconque utilise une clé id_dsa, vous devez également ajouter "PubkeyAcceptedKeyTypes ssh-dss" sous votre hôte. - Michael Russo