560 votes

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

Ma configuration de Git fonctionne bien sous Linux, mais lorsque j'essaie de configurer les choses sous Windows (en utilisant Git for Windows et TortoiseGit ), je ne sais pas où mettre ma clé privée SSH (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 bien si j'autorise l'authentification par mot de passe (au lieu de RSA) sur le serveur.

0 votes

J'ai le même problème, je peux me connecter à ma boîte de développement en utilisant une clé publique en tant que "root" en utilisant le programme "Git Bash" qui est installé avec "Git For Windows" mais je ne peux pas me connecter en tant que "git" avec ma clé même si j'ai copié mon fichier "authorized_keys" de mon "root" vers mon utilisateur "git" et que j'ai défini les propriétaires et les permissions correctement. Pourquoi ne puis-je pas me connecter en tant que "git" alors que "root" fonctionne avec exactement le même fichier "authorized_keys". Au lieu de cela, pour "git", il 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. Au fait, il s'agit d'un serveur Centos 5.5.

0 votes

@fuzzy lollipop : Avez-vous les bonnes permissions sur le fichier authorized_keys de votre utilisateur git ? Il devrait être chmod 600, et devrait appartenir à l'utilisateur git. S'il appartient à l'utilisateur root, cela ne fonctionnera pas.

0 votes

Oui tous les fichiers et répertoires ont les propriétaires et les permissions corrects

536voto

Ben Lever Points 754

Pour Git Bash

Si vous utilisez msysgit (je suppose que c'est le cas) et que vous cherchez à exécuter Git Bash (je le recommande plutôt que TortoiseGit, mais j'ai tendance à préférer la CLI à l'interface graphique maintenant), vous devez déterminer quel est votre répertoire d'origine pour Git Bash en le démarrant puis en tapant pwd (Sous Windows 7, ce sera quelque chose comme C:\Users\phsr je crois). Pendant que vous êtes dans Git Bash, vous devriez mkdir .ssh .

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

Remarque : les commentaires indiquent que cela ne fonctionne pas dans tous les cas. Vous pouvez avoir besoin de copier la clé OpenSSH vers Program Files\Git\.ssh\id_rsa (o Program Files (x86)\Git\.ssh\id_rsa ).

Pour TortoiseGit

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

4 votes

Les instructions de pacey pour tortoisegit ne fonctionneront pas tant que vous n'aurez pas le référentiel (parce que le paramètre de configuration 'remote' n'apparaît pas à moins que vous n'agissiez sur un référentiel), et vous ne pouvez probablement pas obtenir le référentiel en premier lieu si vous ne pouvez pas vous authentifier afin de cloner depuis l'origine. C'est difficile !

46 votes

Avec GitBash, j'ai découvert que je devais copier mes ~/.ssh/id_rsa pour Program Files\Git\.ssh\id_rsa - ce qui était un peu déroutant, mais maintenant IntelliJ et Windows cmd peuvent pousser vers des dépôts git qui utilisent l'authentification par clé.

10 votes

De même. Je viens d'installer git-for-Windows, je le lance depuis cmd.exe. J'avais besoin de mettre les fichiers id_rsa y id_rsa.pub en c:\program files (x86)\Git\.ssh . Le site .ssh dir était déjà présent. Merci, JP.

121voto

Oct Points 1556

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

Par exemple, sur un Windows Vista Pour ce faire, il suffit de lancer setx HOME c:\Users\admin\ sur la ligne de commande.

Cela a fait ma journée et a résolu le problème avec Git à condition que votre clé privée ne soit pas protégée par un 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 le ssh-add comme d'habitude.

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

Si cela ne fonctionne pas correctement, il est probablement possible d'utiliser plink en modifiant les paramètres suivants GIT_SSH . Reportez-vous à tous les tutoriels SVN + ssh ; il s'agit essentiellement de la même plomberie que vous devez installer.

18 votes

C'est ce que je cherchais puisque j'essaie d'utiliser l'invite de commande de Windows, pas git bash.

0 votes

Joli, facile à réparer mais cela aurait été difficile à comprendre sans cela !

0 votes

Il est également important de ne pas avoir de blancs entre HOME = et c : \... La solution d'Oct a fait l'affaire pour moi :-)

63voto

pacey Points 3783

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 Paramètres
  • Dans la fenêtre qui vient de s'ouvrir, naviguez vers Git Remote
  • Définissez le chemin vers votre clé PuTTY dans la zone de saisie correspondante.

Une capture d'écran est ci-dessous :

Enter image description here

9 votes

De plus, si vous avez besoin de convertir votre clé privée au format '.ppk' à partir d'un autre format, vous pouvez suivre les étapes suivantes CE

0 votes

Ça a marché pour moi.

6 votes

Git > Remote n'apparaît que lorsque vous avez réussi à cloner le référentiel.

60voto

Michael Madsen Points 30610

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 ce qu'il faut taper. Il n'y a pas besoin de PuTTY.

  • Ouvrez une invite Bash Git
  • Tapez 'ssh-keygen'.
    • Accepter l'emplacement par défaut
    • Choisissez une phrase de passe vierge (il suffit donc d'appuyer sur 'entrée' à toutes les questions)
  • Copiez maintenant la clé publique sur votre serveur, par exemple : scp ~/.ssh/id_rsa.pub someuser@someserver.com:~

C'est la partie sur votre propre ordinateur qui est terminée. Maintenant ssh dans le serveur de destination, alors faites

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

Voilà, c'est fait ! Vous avez terminé ! Depuis Git Bash, faites ce qui suit pour tester :

ssh someuser@someserver.com ls

S'il liste les fichiers dans votre répertoire personnel sur le serveur Git, et bien vous avez terminé !

Pour GitHub, vous n'avez pas Shell accès à leur serveur, mais vous pouvez télécharger la clé en utilisant leur site web, donc 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 de GitHub, allez dans 'Account settings', 'SSH and GPG keys', cliquez sur 'New SSH key', et collez la clé.

0 votes

Moi aussi, d'autres réponses ont fait que git m'a demandé la phrase de passe de la clé.

0 votes

Excellente réponse ;)

0 votes

Ne fonctionne pas avec github car ils ne permettent pas l'accès à Shell.

57voto

GregB Points 1322

Si vous utilisez msysgit avec les outils OpenSSH, vous devez soit créer ~/.ssh/id_rsa ou créer 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 conserveriez 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 de devoir taper le mot de passe de la clé à plusieurs reprises.

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

3 votes

J'ai fait cela mais pour github.com : Hôte github.com IdentityFile ~/.ssh/github_rsa

1 votes

Si vous avez un espace dans votre chemin, vous devez utiliser des guillemets : IdentityFile "/C/Mes clés/key"

0 votes

Je préfère cette méthode, car elle me permet de connecter rapidement les clés existantes à partir d'autres PC.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X