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

489

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ù placer ma clé privée SSH (ou, mieux encore, comment savoir sshoù elle se trouve. situé). J'utilise l'option ssh.exe standard 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.

binaireorganique
la source
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 For 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 "authorised_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.
@fuzzy lollipop: Avez-vous les autorisations nécessaires sur le fichier allowed_keys de votre utilisateur git? Il devrait s'agir de chmod 600 et devrait appartenir à l'utilisateur git. Si ça appartient à l'utilisateur root, ça ne marchera pas
Dan McClain
oui tous les fichiers et répertoires sont les bons propriétaires et permissions

Réponses:

486

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 le tapant pwd(sous Windows 7, ce sera un peu comme C:\Users\phsrje pense). Pendant que vous êtes à Git Bash, vous devriez mkdir .ssh.

Une fois que vous avez le répertoire personnel et un .sshdossier situé sous celui-ci, vous souhaitez ouvrir PuTTYgen et ouvrir la clé (fichier .ppk) créée précédemment. Une fois votre clé ouverte, vous souhaitez la sélectionner Conversions -> Export OpenSSH keyet l’enregistrer 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 sur 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 en suivant les instructions de Rythme . Vous devez le faire pour chaque référentiel avec lequel vous utilisez TortoiseGit.

Dan McClain
la source
4
Les instructions de pacey relatives à tortoisegit ne fonctionneront pas tant que vous ne disposez pas du 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 depuis l'origine. Rusé!
Kylotan
43
Avec GitBash, je me suis rendu compte que je devais copier mon ~/.ssh/id_rsafichier Program Files\Git\.ssh\id_rsa- ce qui était un peu déroutant, mais IntelliJ et Windows cmd peuvent désormais accéder aux référentiels git qui utilisent l’authentification par clé.
JP.
7
Également. Je viens d'installer git-for-windows, je l'exécute à partir de cmd.exe. Je devais mettre les fichiers id_rsaet id_rsa.pubdans c:\program files (x86)\Git\.ssh. Le .sshdir était déjà présent. Merci, JP.
Cheeso
5
Le deuxième paragraphe était doré. :)
Bjørn
4
@ Damon: Cela devrait être id_rsasans l'extension. C'est le nom du fichier, ce n'est pas un répertoire
Dan McClain
107

À 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 une installation Windows Vista , cela se ferait en entrant 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 faire 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 tutoriels SVN + ssh; c’est la même tuyauterie que vous devez installer.

oct
la source
16
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
2
Le setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use cmd` à la place.
trejder
2
+1GIT_SSH=c:\pathto\plink.exe
Nick Grealy
54

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 dans 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:

Entrez la description de l'image ici

rythme
la source
8
De plus, si vous avez besoin de convertir votre clé privée au format '.ppk' à partir d'un autre format, vous pouvez suivre CECI
Tariq M Nasim
Cela a fonctionné pour moi.
Maxim Eliseev
6
Git> Remote n'apparaît qu'une fois le référentiel cloné.
Steve Pitchers
5
Une solution beaucoup plus simple consiste à tout configurer pour que tout fonctionne correctement dans git (à l'aide de 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
50

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 [email protected]: ~

C'est le peu sur votre propre ordinateur fait. Maintenant sshdans le serveur de destination, alors faites

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

C'est ça! Vous avez terminé! À partir de 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, 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é.
Hugh Perkins
la source
8
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
14
Vous répondez à la mauvaise question. Le Q est comment pointer sur une clé privée existante.
Orangutech
7
@ GregB, je le regarde comme ceci: n'importe quel 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 opinion bien sûr!)
Hugh Perkins
3
@ 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 de 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
4
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
38

Si vous utilisez msysgit avec les outils OpenSSH, vous devez créer ~/.ssh/id_rsaou créer une configuration Git dans ~/.ssh/configlaquelle pointe 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 actuelle afin d'éviter d'avoir à saisir à plusieurs reprises le mot de passe de la clé.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key
GregB
la source
1
C'est ce que j'ai fait, mais pour github.com: hôte github.com IdentityFile ~ / .ssh / github_rsa
Sarah Vessels
1
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 existait des clés d'autres PC
Kirill Gusyatin
Mon .gitconfig a des sections. Sous quelles sections devrais-je mettre ces hôtes?
Steve Yakovenko
16

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
Jono
la source
6
Dans mon cas, j'ai ajouté HOME =% USERPROFILE%
igor
1
Notez que %HOMEPATH%cela ne contient pas la lettre de lecteur, donc si votre source n’est pas C:allumée, vous devez ajouter le préfixe C:à %HOME%.
Graeme Perrow
set %HOME%=%HOMEPATH%travaillé pour moi! Je vous remercie!!
Teng
7

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

Declan Shanaghy
la source
J'ai indiqué ci-dessus que j'utilise Git pour Windows et que j'utilise ssh.exe (packagé 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 a-t-il un agent.exe ou quelque chose du genre?
Declan Shanaghy
1
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 immédiatement. Je suis perplexe.
binaryorganic
8
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 devriez certainement écrire ce commentaire comme une réponse en taille réelle ! C'est la seule solution ici , qui m'a réellement aidé et résolu mon problème! Dommage, que je ne puisse vous donner que +1! :]
trejder
6

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

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

J'ai dû mettre à jour le fichier C:\Program Files\Git\etc\ssh\ssh_configavec ceci:

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 les siens ssh.

De plus, si vous envisagez d'utiliser ssh-keyscan host.com > known_hostsOpenSSH, soyez prudent, car la sortie de la tuyauterie stdoutde keyscan(sous Windows) change le codage en UCS-2, mais OpenSSH ne peut lire que le format UTF-8! Assurez-vous donc de changer le known_hostscodage du fichier.

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

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 \

Bas van den Dikkenberg
la source
C'était la solution la plus simple sur ma machine Win7. Comme vous, 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
4

Le moyen le plus efficace consiste à 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 poussée. Toutes les réponses ici étaient trop courtes, je vais donc poster un guide détaillé ici:

  1. Télécharger pageant.exe, puttygen.exe, putty.exeet plink.exesur le site Web de PuTTY. Placez-les dans le C:\puttyToolsrépertoire.
  2. Courez puttygen.exe.
  3. Cliquez sur le bouton Generate.
  4. Faites glisser 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 enregistrer ces fichiers est %USERPROFILE%\_ssh(sur mon ordinateur, cela correspond C:\Users\andres\.ssh\). Peu importe comment vous appelez la clé, mais à des fins de démonstration, je vais l'appeler github.ppk. Ce fichier devrait avoir une extension de .ppk.
  7. Copiez le texte dans la zone de texte supérieure de PuTTYgen, celui étiqueté, Public key for pasting into OpenSSH authorized_keys filepuis collez-le dans une nouvelle clé SSH dans les paramètres de GitHub. Donnez-lui un titre décrivant la machine sur laquelle la clé est activée (par exemple, "Ordinateur portable au travail").
  8. Exécuter pageant.exe, une nouvelle icône de système apparaîtra.
  9. Faites un clic droit sur l'icône -> Ajouter une clé.
  10. Localisez votre fichier ppk, entrez votre phrase secrète.
  11. Créez ces nouvelles variables d’environnement utilisateur (via la recherche d’application Environvia WindowsMenu qui trouvera Edit environment variables for your account): GIT_SSH = "C:\puttyTools\plink.exe"etSVN_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. Une boîte de dialogue vous demandera si vous acceptez l’empreinte du serveur: cliquez sur OUI.
  13. Exécutez une nouvelle instance de votre MINGW64console Git et vérifiez que les variables d'environnement sont présentes en écrivant la commande env | grep -i ssh.
  14. Vous devriez être tous ensemble. Essayez de cloner avec le protocole Git + SSH de votre hôte.

(A l'origine, extraits de ces deux guides que j'ai combinés en un: Comment configurer Git pour Windows et configurer MinGW-W64 + MSYS pour utiliser PuTTY Plink / Pageant .)

knocte
la source
3

Lors du mélange de GitHub pour Windows et de l'interface graphique Git pour Windows, vous pouvez rencontrer des problèmes pour lesquels l'interface graphique de Git ne cesse de vous demander un nom d'utilisateur et un mot de passe. Le remède à cela consiste à changer l'URL distante de https:(ce que crée GitHub pour Windows) en protocole Git. Dans le .gitrépertoire du fichier de configuration, trouvez:

[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/*
IDisposable
la source
Oui, c'est très énervant. Il est naturel et facile de cloner un repo avec github pour l'interface graphique Windows, mais échouer lors de l'utilisation de git cui en dehors de git shell. Je me demande comment la commande git dans le shell git fonctionne avec https url ...
hiroshi
pour SSH, le préfixe est-il toujours git@{SERVER URL}?
nmz787
Oui, autant que j'ai jamais vu :)
IDisposable
Je l'avais déjà - me demande toujours tout le temps
Ian Grainger
3

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

%USERPROFILE%est l'équivalent de $ HOME sous Unix (normalement, correspond à 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 un script similaire à mon script ici pour utiliser ssh-agent dans tous les shells.

Eric Blade
la source
Pour les futurs lecteurs, %USERPROFILE% is the equivalent of $HOMEn’est pas l’équivalent de $HOME. Beaucoup d'applications Linux agissantes portées sous Windows traitent les deux de la même manière, mais elles ne doivent pas être traitées de la même manière.
Micah Zoltu
Micah, pouvez-vous informer les différences d'intention pour cela? En outre, même avec une intention différente, il semblerait que si tous les outils utilisent l'un comme l'autre, alors ne devient-il pas effectivement équivalent?
Eric Blade
Les outils utilisés %USERPROFILE%sous Windows de la même manière que $HOMEsous Linux violent les meilleures pratiques / recommandations bien documentées en matière de développement Windows (publiées par MS il y a longtemps et mises à jour au fil du temps). Il existe de nombreux outils pour le faire, mais l'argument pour les suivre ressemble beaucoup à l'argument "X pisse dans la piscine, alors nous devrions aussi." USERPROFILEest l'endroit où l'utilisateur stocke les documents qu'il crée / enregistre (par exemple, la boîte de dialogue d'enregistrement). APPDATAest pour les données de configuration par utilisateur. LOCALAPPDATAest destiné aux caches par utilisateur et aux fichiers volumineux. PROGRAMDATAest pour la configuration à l'échelle de la machine et le cache.
Micah Zoltu
En général, les seuls outils qui se comportent mal avec USERPROFILE sont des outils écrits par des développeurs Linux et ensuite portés sur Windows. En tant que développeur, vous en utilisez probablement beaucoup, ce qui donne l' impression que "tout le monde le fait", mais en dehors de l'écosystème des outils de développement, la plupart des applications Windows sont de bons citoyens. Même Microsoft fait parfois l’erreur de ne pas mettre les choses au bon endroit (c’est une très grosse entreprise), bien qu’en général, lorsque vous leur faites remarquer, ils s’efforcent de résoudre le problème et de suivre les instructions du système d’exploitation.
Micah Zoltu
1
(désolé, limite de caractères StackExchange sur les commentaires). Voici plus de détails sur les dossiers et une brève description de leur contenu. Il existe également d'autres ressources, notamment des articles de blog consommables, mais celle-ci offre la plus grande précision technique: technet.microsoft.com/en-us/library/cc749104(v=ws.10).aspx
Micah Zoltu
2

J'ai eu des problèmes similaires et aucune des réponses ici résolu le problème. En fait, ma paire de clés a été générée à l’origine avec une phrase secrète vide. (Je sais, bête.)

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.

Eric Cloninger
la source
1
cette. ughhhhhhhhhhhh. au revoir 2 heures
Scoop
1

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

Alexandre Pacha
la source
Suite au lien que vous avez fourni, j'ai pu obtenir ma configuration Jenkins. J'avais besoin de définir la variable d'environnement HOME sur le chemin du programme Git qui contenait le répertoire .ssh dans lequel j'ai créé ma clé SSH.
Spechal
1

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

ssh -i /home/joe/.ssh/eui_rsa
Jim
la source
Cela résout absolument le problème et vous permet de stocker vos clés où vous le souhaitez.
DaveGauer
La question portait spécifiquement sur les fenêtres. J'ai git GIT_SSH_COMMANDsur mon ordinateur Ubuntu qui fonctionne de la sorte, mais je ne sais pas quoi définir sur mon ordinateur Windows.
mjaggard
1

Pageant (un agent SSH fourni avec le paquet 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", de sorte qu'il charge mes clés SSH au démarrage, ce qui permet à Git de "fonctionner juste": o)

Owen Blacker
la source
4
Je pense que vous avez besoin de plusieurs autres paramètres corrects pour que cela fonctionne (comme GIT_SSH défini sur TortoisePLink.exe, je pense?), Et bien que cela ait fonctionné pour moi dans le passé, j'ai souvent des problèmes avec cela sur d'autres machines. :-(
Simon East
Je reçois le message 'Impossible d'ouvrir le fichier' dans Pageant :( Ce que je sais est configuré correctement, car je l'utilise pour TortoiseGit :(
Ian Grainger. Le
1

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

dans Windows avec msys (console Windows standard) C:\Users\{you}\.ssh\id_rsa

En gros, cela ne dérange pas de scanner les clés installées (du moins pas sur mon nouvel ordinateur portable) et a donc besoin de id_rsa

J'ai rencontré ce souhait de cloner certains référentiels de travaux privés dans la CLI MSYS ruby ​​pour Windows 10 64 bits

MrMesees
la source
0

Si vous utilisez Windows 7/8, vous devriez regarder dans C: \ Users \ Your_User_Name.ssh. Il vous suffit de copier et coller votre fichier id_rsa ici pour que tout soit prêt à l'emploi.

eeree
la source
0

Une erreur que j’ai commise lors de l’utilisation de SSH sous Windows est que, lorsque j’ai essayé d’utiliser les clés par le biais du client Git Bash, tous les fichiers contenus dans ~ / .ssh étaient des autorisations erronées. problème.

À titre d’essai, assurez-vous que vous avez défini tous les éléments de votre répertoire ~ / .ssh sur chmod 600.

Spedge
la source
0

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/ ), en particulier si vous avez une expérience préalable de Linux. Cygwin vous permettra de gérer vos clés ssh comme vous le feriez sur n’importe quel autre ordinateur Linux / Unix. Et il donne accès à presque tous les outils cli de Linux.

torbenl
la source
1
Il est parfaitement raisonnable de faire de telles suggestions à titre de commentaires. Mais comme la question demande explicitement git pour Windows, attendez-vous à un vote négatif pour avoir posté cette réponse.
Rob
0

TortoiseGit vous permet de spécifier la clé à utiliser lors du clonage d'un référentiel. Cochez simplement "Load Putty Key" et naviguez jusqu'au .ppkfichier, comme sur la capture d'écran:https://i.stack.imgur.com/lAyzT.png

NGNeer
la source
Si cette Settings... -> Network -> SSH clientC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
option
0

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

~ / .ssh / config

déposer et mettre:

IdentityFile C:\Users\adria\.ssh\mysshkey
Adrian Onu
la source
0

En lisant votre commentaire sur la réponse de Declan, ouvrez d’abord une invite de commande (Démarrer → Exécutercmd ), puis accédez au dossier git / bin et exécutez-le ssh-keygen. Théoriquement, cela va générer une clé RSA et la placer dans le répertoire approprié. Ensuite, il vous suffit de la trouver et de partager votre clé publique avec le monde entier.

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

Naydichev
la source
0

En utilisant la v0.17 de Git Gui sous Windows, j'ai cliqué sur la commande de menu suivante: AideAfficher 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-papier. Ensuite, j'ai continué à suivre les instructions de setup-ssh sur githelp à partir de la troisième étape . Par la suite, Git Gui a communiqué avec GitHub en silence - nul besoin de saisir d’authentification.

Snow6oy
la source
0

Sur mon système Windows 7, Git Gui recherche la clé RSA dans le userprofile/.sshdossier ou plus spécifiquement c:/users/yourusername/.ssh/.

La partie délicate de mon installation a été de faire accepter la clé par l’hôte partagé de hostmonster. La seule façon pour que cela fonctionne est d'utiliser Git Gui pour créer les paires de clés (sans mot de passe), puis pour copier et coller la clé publique via le panneau de configuration, ssh, clés de gestion.

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 .sshrépertoire. Ouvrez le .pubfichier et copiez le contenu.

Connectez-vous à votre panneau de contrôle sur l'hôte partagé et allez dans SSH , Gérer les clés SSH et Importer la clé . Collez dans la zone publique et assurez-vous de lui attribuer le nom correct sans l'extension - le mien l'était id_rsa. Vous devez maintenant autoriser la clé à l’aide du lien Gérer les autorisations afin qu’elle soit concaténée dans le authorized_keysfichier.

Maintenant, votre Git Gui et votre Git Bash devraient pouvoir utiliser SSH sans avoir à saisir le mot de passe. Bizarrement, j'ai pu utiliser SSH via Git Bash et Git Gui fonctionnait parfaitement sur mes propres serveurs fonctionnant sous Linux, c'était simplement l'hébergement partagé qui me convenait le mieux. J'espère que cela aidera quelqu'un car cela m'a pris des heures d'essais et d'erreurs pour arriver à cela - et c'est si simple!

utilisateur228414
la source
0

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

Ouvrir cmd.exeet exécuter setx HOME c:\PATH_TO_PRIVATE_KEY.

Créez un nouveau dossier, .ssh(s'il n'existe pas) à l'intérieur c:\PATH_TO_PRIVATE_KEYet copiez-y votre id_rsafichier (votre clé privée).

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

duccom
la source
0

Mon expérience msysgit OpenSSL / Bash Git (et non celle de PuTTY) est que l'ordre de recherche de votre .ssh/dossier est le suivant.

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

D'où la raison pour laquelle tant de personnes suggèrent de définir HOMEsi 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 l’utilisation ssh -vsur 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é une sshrecherche sur un lecteur obscur et aucune des réponses précédentes ne semblait expliquer ce que nous avons vu.

Parfois , %HOMEDRIVE%%HOMEPATH%un lecteur réseau mappé (par exemple H:/) qui provoque des défaillances inutiles quand il y a réseau / problèmes de fileserver, même quand %USERPROFILE%/.sshest C:/Users/Username/.sshet a les clés sur place. Le réglage %HOME%sur %USERPROFILE%cesse de regarder le lecteur de la maison à distance.

KCD
la source
0

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

Git le reconnaît et l'utilise pour pousser / tirer.

deepakkt
la source
0

J'utilisais TortoiseGit ainsi que Git Bash sous Windows, en fonction des besoins. J'ai tout ajouté dans TortoiseGit, et cela a bien fonctionné, mais Git Bash ne l'a pas récupéré 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 changer le chemin d'accès où que soit située votre clé, en vous rappelant de l'utiliser \\comme séparateur.

Vlad Schnakovszki
la source
0

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 à ssh-agent .

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa
Matoeil
la source
Bienvenue sur Server Fault. Cette question a déjà une réponse largement acceptée acceptée il y a plusieurs années. Continuez à chercher de nouvelles questions ou à améliorer de manière significative.
Matthew Wetmore
1
la réponse largement acceptée n'a pas fonctionné pour moi alors que celle-ci a fonctionné. Je pense que cela aiderait peut-être quelqu'un à savoir que la clé doit être ajoutée à l'agent ssh et que cela peut être fait avec 2 lignes d'instructions
Matoeil