web-dev-qa-db-fra.com

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

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

503
binaryorganic

Pour Git Bash

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

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

Remarque: les commentaires indiquent que cela ne fonctionne pas dans tous les cas. Vous devrez peut-être copier la clé OpenSSH dans 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 directions de pacey . Vous devez le faire pour chaque référentiel avec lequel vous utilisez TortoiseGit.

493
Dan McClain

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

Par exemple, sur une installation de Windows Vista , 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 souhaitez utiliser ssh-agent, vous pouvez probablement exécuter ssh-agent cmd.exe (bien que je ne l'ai jamais fait) et le 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 clignoter une fenêtre.

Si cela ne fonctionne pas correctement, l'utilisation de plink peut probablement être obtenue en modifiant GIT_SSH. Reportez-vous à tous les didacticiels SVN + ssh; il s'agit essentiellement de la même plomberie que vous devez configurer.

108
Oct

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

  • Ouvrez une fenêtre d'explorateur.
  • Ouvrez le menu contextuel et naviguez TortoiseGitParamètres
  • Dans la fenêtre maintenant ouverte, accédez à GitRemote
  • 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

57
pacey

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 PuTTY.

  • Ouvrez une invite Git Bash
  • Tapez 'ssh-keygen'
    • Acceptez l'emplacement par défaut
    • Choisissez une phrase secrète vierge (il suffit donc d'appuyer sur "Entrée" pour toutes les questions ")
  • Copiez maintenant la clé publique sur votre serveur, par exemple: scp ~/.ssh/id_rsa.pub [email protected]: ~

C'est le peu sur votre propre ordinateur fait. Maintenant 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 ça! Vous avez terminé! Depuis Git Bash, procédez comme suit pour tester:

ssh [email protected] ls

S'il répertorie les fichiers de votre répertoire personnel sur le serveur Git, alors 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, donc pour le bit 'maintenant, copiez sur votre serveur', faites:

  • Dans Git Bash, saisissez 'cat ~/.ssh/id_rsa.pub', sélectionnez le résultat et copiez-le dans le presse-papiers.
  • Sur le site Web de GitHub, accédez à "Paramètres du compte", "Clés SSH et GPG", cliquez sur "Nouvelle clé SSH" et collez la clé.
51
Hugh Perkins

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 (au cas où 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 actuelle afin d'éviter d'avoir à taper à plusieurs reprises le mot de passe de la clé.

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

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

Cela a l'avantage de fonctionner pour tous les utilisateurs connectés au système (ils obtiennent chacun des dossiers .ssh séparés).

Sous Vista:

  1. Faites un clic droit sur l'ordinateur
  2. Choisissez les 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 variable:% HOMEPATH%
  8. Cliquez sur OK
16
Jono

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

Mon Git a été installé par Chocolatey to 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 prévoyez d'utiliser ssh-keyscan Host.com > known_hosts depuis OpenSSH, soyez prudent car la sortie de la tuyauterie depuis stdout de keyscan (sous Windows) change le codage en UCS-2, mais OpenSSH ne peut lire que UTF-8! Assurez-vous donc de changer le known_hosts encodage du fichier.

9
oglop

Votre clé privée doit être ajoutée à l'agent SSH sur votre poste de travail. Comment cela peut dépendre du client git que vous utilisez, mais PuTTY et son agent associé (pageant) peuvent faire l'affaire pour vous, voici le lien vers les binaires officiels et la source:

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

7
Declan Shanaghy

L'emplacement standard des fichiers est dans %USERPROFILE%\.ssh.

%USERPROFILE% est l'équivalent de $ HOME sous Unix (correspond normalement à quelque chose comme c:\users\youruserid).

Si vous utilisez les outils SSH fournis avec Git, qui sont les outils standard de style Unix en ligne de commande, vous pouvez utiliser quelque chose comme mon script ici pour travailler avec ssh-agent sur tous les shells.

4
Eric Blade

Le moyen le plus efficace est d'utiliser Pageant car il vous permettra d'écrire la phrase secrète une seule fois au début de la session au lieu de chaque Push. Toutes les réponses ici étaient trop courtes, je vais donc publier un guide détaillé ici:

  1. Télécharger pageant.exe, puttygen.exe, PuTTY.exe et plink.exe du site Web de PuTTY. Placez-les dans C:\puttyTools répertoire.
  2. Courir puttygen.exe.
  3. Cliquez sur le bouton Generate.
  4. Agitez la souris dans la partie supérieure de la fenêtre jusqu'à ce que la barre de progression soit pleine, comme le programme vous le demande.
  5. Fournissez une phrase secrète et répétez-la dans la zone de texte suivante.
  6. Cliquez sur "Enregistrer la clé privée". Le répertoire habituel pour les enregistrer est %USERPROFILE%\_ssh (sur mon ordinateur, cela correspond à C:\Users\andres\.ssh\). Peu importe ce que vous appelez la clé, mais à des fins de démonstration, je vais l'appeler github.ppk. Ce fichier doit avoir l'extension .ppk.
  7. Copiez le texte dans la zone de texte supérieure de PuTTYgen, celle intitulée Public key for pasting into OpenSSH authorized_keys file et collez-le dans une nouvelle clé SSH dans les paramètres de GitHub. Donnez-lui un titre décrivant la machine sur laquelle se trouve la clé (par exemple, "Ordinateur portable professionnel").
  8. Courir pageant.exe, une nouvelle icône systray apparaîtra.
  9. Faites un clic droit sur l'icône -> Ajouter une clé.
  10. Localisez votre fichier ppk, entrez votre mot de passe.
  11. Créez ces nouvelles variables d'environnement utilisateur (en recherchant l'application Environ via WindowsMenu qui trouvera Edit environment variables for your account): GIT_SSH = "C:\puttyTools\plink.exe" et SVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
  12. Ouvrez PuTTY.exe et essayez de vous connecter à l'hôte sur lequel vous hébergez vos référentiels Git. Par exemple, essayez de vous connecter à github.com via SSH, et une boîte de dialogue vous demandera si vous acceptez l'empreinte digitale du serveur: cliquez sur OUI.
  13. Exécutez une nouvelle instance de votre MINGW64 Git console, et vérifiez que les variables d'environnement sont là en écrivant la commande env | grep -i ssh.
  14. Vous devriez être prêt. Essayez de cloner avec le protocole Git + SSH de votre hôte.

(Initialement extrait de ces deux guides que j'ai combinés en un seul: Comment configurer Git pour Windows et Configurer MinGW-W64 + MSYS pour utiliser PuTTY Plink/Pageant.)

4
knocte

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

Mais en plaçant mes clés SSH privées dans un dossier public, je ne pensais pas que c'était une bonne idée, alors j'ai commencé à chercher où se trouvait l'hôte connu.

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

Pour Windows 7, 8 et 8.1 32 bits:

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

Pour Windows 7, 8 et 8.1 64 bits:

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

3

Lorsque vous mélangez GitHub pour Windows et Git GUI pour Windows, vous pouvez rencontrer des problèmes où Git GUI continue de vous demander un nom d'utilisateur et un mot de passe. Le remède est de changer l'URL distante de https: (qui est ce que GitHub pour Windows crée) au protocole Git. Dans le .git répertoire dans le fichier de configuration, recherchez:

[remote "Origin"]
   url = https://github.com/**username**/**reponame**.git
   fetch = +refs/heads/*:refs/remotes/Origin/*

Changez-le en:

[remote "Origin"]
    url = [email protected]:**username**/**reponame**.git
    fetch = +refs/heads/*:refs/remotes/Origin/*
3
IDisposable

J'ai eu des problèmes similaires et aucune des réponses ici n'a résolu le problème. Il s'avère que ma paire de clés a été générée à l'origine avec une phrase de passe vide. (Je sais, idiot.)

Une fois que j'ai créé une nouvelle paire de clés et téléchargé la clé publique sur GitHub, les choses ont recommencé à fonctionner.

2
Eric Cloninger

J'ai résolu le problème ci-dessus en créant

~/.ssh/config

déposer et mettre:

IdentityFile C:\Users\adria\.ssh\mysshkey
2
Adrian Onu

Pageant (un agent SSH fourni avec le ensemble PuTTY ) résout 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", afin qu'il charge mes clés SSH au démarrage, ce qui fait que Git "fonctionne": o)

1
Owen Blacker

La réponse suivante s'applique également à cette question lors de l'exécution de ssh à partir du compte de service Windows: Jenkins (service Windows) avec Git sur SSH

1
Alexander Pacha

Vous pouvez spécifier à la fois le chemin d'accès à la clé et le nom du fichier de clé (sur Ubuntu). Par exemple:

ssh -i /home/joe/.ssh/eui_rsa
1
jim

Beaucoup de réponses le disent, mais pour moi pas assez vite!

dans les fenêtres utilisant msys (console Windows standard) C:\Users\{you}\.ssh\id_rsa

Fondamentalement, cela ne dérange pas la numérisation des clés installées (du moins pas sur mon nouvel ordinateur portable) et nécessite donc spécifiquement id_rsa

J'ai rencontré ce souhait de cloner des dépôts de travail privés dans Ruby MSYS CLI pour Windows 10 64 bits

1
MrMesees

Si vous utilisez Git pour Windows, une fois les clés SSH générées, vous devez ajouter votre clé SSH à ssh-agent.

Voir Génération d'une nouvelle clé SSH et l'ajout à l'agent ssh.

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa
0
Matoeil

En lisant votre commentaire à la réponse de Declan, essayez d'abord d'ouvrir une invite de commande (Démarrer → Exécutercmd), puis accédez à ce dossier git/bin et exécutez ssh-keygen. Théoriquement, cela générera une clé RSA et la placera dans le répertoire approprié. Ensuite, il vous suffit de le trouver et de partager votre clé publique avec le monde.

La raison pour laquelle la fenêtre "clignote" est parce que Windows exécute le programme, et quand il s'exécute, il ferme l'invite de commande, pensant que vous en avez terminé, lorsque vous avez vraiment besoin de la sortie.

0
naydichev

Si vous êtes sous Windows 7/8, vous devriez regarder dans C:\Users\Your_User_Name.ssh Copiez et collez simplement votre fichier id_rsa ici et tout fonctionnera prêt à l'emploi.

0
eeree

Une erreur que j'ai commise lors de l'utilisation de SSH sous Windows était que lorsque j'ai essayé d'utiliser les clés via le client Git Bash, tous les fichiers dans ~/.ssh étaient des autorisations incorrectes, mais il n'a pas essayé de me dire que c'était un problème.

À titre de test, assurez-vous que vous avez défini tout dans votre répertoire ~/.ssh sur chmod 600.

0
Spedge

Vous pouvez également charger PuTTY Agent (pageant) et ajouter la clé privée que vous avez générée avec PuTTY pour le serveur.

Git le reconnaît et l'utilise pour Push/Pull.

0
deepakkt

Si vous disposez des autorisations nécessaires sur la machine Windows et que vos politiques le permettent, je vous suggère d'installer Cygwin ( https://cygwin.com/ ), surtout si vous avez une expérience préalable avec Linux. Cygwin permettra de gérer vos clés ssh comme vous le feriez sur n'importe quelle autre machine Linux/Unix. Et il donne accès à presque tous les outils cli de Linux.

0
torbenl

J'utilisais TortoiseGit ainsi que Git Bash sur Windows, selon les besoins. J'ai tout ajouté dans TortoiseGit, et cela a bien fonctionné, mais Git Bash ne le récupérait pas même si les clés étaient dans le bon répertoire. Il s'est avéré que je devais le faire depuis Git Bash:

ssh-add C:\\Users\\<YOUR_USER>\\.ssh\\id_rsa

Vous pouvez bien sûr modifier le chemin d'accès à l'emplacement de votre clé, en vous rappelant d'utiliser \\ comme séparateur.

0

Sur mon système Windows 7, Git Gui recherche la clé RSA dans le userprofile/.ssh dossier ou plus précisément c:/users/yourusername/.ssh/.

La partie délicate de ma configuration consistait à faire en sorte que l'hôte partagé chez hostmonster accepte la clé. La seule façon de le faire fonctionner était d'utiliser Git Gui pour créer les paires de clés (sans mot de passe), puis de copier et coller la clé publique via le panneau de configuration, ssh, gérer les clés.

Pour commencer au début, vous devez créer les clés dans Git Gui en allant dans le menu Aide, Afficher la clé SSH, puis Générer la clé. Vous allez maintenant avoir deux nouvelles clés dans le .ssh répertoire. Ouvrez le .pub fichier et copiez le contenu.

Connectez-vous à votre panneau de contrôle sur l'hôte partagé et accédez à SSH , Gérer les clés SSH, et Clé d'importation. Collez-le dans la zone Public et assurez-vous de lui donner le bon nom sans l'extension - le mien était id_rsa. Vous devez maintenant autoriser la clé à l'aide du lien de gestion des autorisations, afin qu'elle soit concaténée dans le authorized_keys fichier.

Maintenant, votre Git Gui et votre Git Bash devraient pouvoir pousser en utilisant SSH sans avoir à taper le mot de passe. Curieusement, j'ai pu pousser en utilisant SSH via Git Bash et Git Gui très bien sur mes propres serveurs exécutant Linux, c'était juste l'hébergement partagé qui me donnait des ajustements. J'espère que cela aide quelqu'un car il m'a fallu des heures d'essais et d'erreurs pour en arriver là - et c'est si simple!

0
user228414

Mon msysgit expérience OpenSSL/Bash Git (pas le plink de PuTTY) est que l'ordre de recherche pour votre .ssh/ est le suivant.

  1. %HOME%/.ssh/
  2. %HOMEDRIVE%%HOMEPATH%/.ssh/
  3. %USERPROFILE%/.ssh/

C'est pourquoi tant de gens suggèrent de définir HOME si l'un des autres n'est pas ce que vous attendez. Plus important encore, vous pouvez vérifier par vous-même; pour déboguer, utilisez ssh -v à un serveur qui utilise l'authentification par clé publique comme suit:

$ ssh -v [email protected]
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /d/.ssh/config
...
debug1: identity file /d/.ssh/identity type -1
debug1: identity file /d/.ssh/id_rsa type 1
debug1: identity file /d/.ssh/id_dsa type -1
...
debug1: Next authentication method: publickey
debug1: Trying private key: /d/.ssh/identity
debug1: Offering public key: /d/.ssh/id_rsa
..
Hi kcd83! You've successfully authenticated, but GitHub does not provide Shell access.

Nous avons trouvé ssh en train de chercher sur un lecteur obscur et aucune des réponses précédentes ne semblait expliquer ce que nous avions vu.

Quelquefois %HOMEDRIVE%%HOMEPATH% est un lecteur réseau mappé (par exemple H:/) qui provoque des échecs inutiles en cas de problèmes de réseau/serveur de fichiers, même lorsque %USERPROFILE%/.ssh est C:/Users/Username/.ssh et possède les clés localement. Réglage %HOME% à %USERPROFILE% l'empêche de regarder le disque dur distant.

0
KCD

En utilisant la version 0.17 de Git Gui sous Windows, j'ai cliqué sur la commande de menu suivante: Aide Afficher la clé SSH .

Une boîte de dialogue est apparue intitulée Votre clé publique OpenSSH . J'ai généré une clé et l'ai copiée dans le presse-papiers. Ensuite, j'ai continué à suivre les instructions de setup-ssh sur githelp à partir de Étape trois . Ensuite, Git Gui a communiqué avec GitHub en silence - pas besoin d'entrer des informations d'identification.

0
snow6oy

En utilisant Windows 10, je n'ai pas pu faire fonctionner la clé SSH générée par le concours (au moins pour Git sur la ligne de commande, en utilisant SourceTree, je n'ai pas eu de problème) lors de l'exécution:

git Push Origin master

Donc ma solution:

  1. J'ai ouvert 'Git Bash'
  2. Ran

    ssh-keygen
    
  3. Les clés confirmées existent maintenant

    ls ~/.ssh
    
  4. Ouvert id_rsa.pub dans Notepad ++, sélectionné tout le contenu

  5. Ajout d'une nouvelle clé dans Bitbucket, https://bitbucket.org/account/user/myusername/ssh-keys/

  6. Contenu étiqueté et collé dans le champ clé -> Ajouter une clé

Après cela, la ligne de commande Git a fonctionné. Il semble qu'il veuille l'ancien format PEM, car si j'essaie d'importer cette clé dans le concours, il en dit autant.

0
HostMyBus

TortoiseGit vous permet de spécifier la clé à utiliser lors du clonage d'un référentiel. Cochez simplement "Load PuTTY Key" et accédez au .ppk fichier, comme dans la capture d'écran: https://i.stack.imgur.com/lAyzT.png

0
NGNeer

Si vous utilisez la ligne de commande Git pour Windows, vous pouvez procéder comme suit:

Ouvert cmd.exe et exécutez setx HOME c:\PATH_TO_PRIVATE_KEY.

Créer un nouveau dossier, .ssh, (s'il n'existe pas) dans c:\PATH_TO_PRIVATE_KEY et copiez votre id_rsa fichier (votre clé privée) dedans.

Terminé. Vous pouvez maintenant utiliser la ligne de commande Git normalement.

0
duccom