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.
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
).
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.
À 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.
Vous pouvez spécifier l'emplacement de clé pour TortoiseGit de la manière suivante:
Une capture d'écran est ci-dessous:
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.
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:
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
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:
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.
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
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.
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:
pageant.exe
, puttygen.exe
, PuTTY.exe
et plink.exe
du site Web de PuTTY. Placez-les dans C:\puttyTools
répertoire.puttygen.exe
.%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.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").pageant.exe
, une nouvelle icône systray apparaîtra.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"
MINGW64
Git console, et vérifiez que les variables d'environnement sont là en écrivant la commande env | grep -i ssh
.(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.)
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 \
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/*
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.
J'ai résolu le problème ci-dessus en créant
~/.ssh/config
déposer et mettre:
IdentityFile C:\Users\adria\.ssh\mysshkey
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)
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
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
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
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
En lisant votre commentaire à la réponse de Declan, essayez d'abord d'ouvrir une invite de commande (Démarrer → Exécuter → cmd), 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.
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.
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.
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.
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.
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.
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!
Mon msysgit expérience OpenSSL/Bash Git (pas le plink de PuTTY) est que l'ordre de recherche pour votre .ssh/
est le suivant.
%HOME%/.ssh/
%HOMEDRIVE%%HOMEPATH%/.ssh/
%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.
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.
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:
Ran
ssh-keygen
Les clés confirmées existent maintenant
ls ~/.ssh
Ouvert id_rsa.pub dans Notepad ++, sélectionné tout le contenu
Ajout d'une nouvelle clé dans Bitbucket, https://bitbucket.org/account/user/myusername/ssh-keys/
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.
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:
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.