Je configure un environnement git sur Windows XP (msysGit 1.7.11, TortoiseGit 1.7.14) et j'essaie d'atteindre les points suivants:
Je crée donc un fichier ~/.ssh/config :
Host gitbox
User gitolite
Hostname XX.XX.XX.XX
Port 154
PreferredAuthentications publickey
IdentityFile "/c/Documents and Settings/kraymer/.ssh/id_rsa"
Lorsque vous utilisez la CLI git bash, tout fonctionne comme prévu.
Je me bats avec TortoiseGit.
J'ai d'abord installé TortoiseGit avec Plink et utilisé Pageant pour charger la clé privée ssh. L'authentification automatique (Pageant) a fonctionné mais la configuration a été un échec car TortoiseGit ne reconnaît pas l'url de git repos au format gitolite@gitbox/repo.git .
J'ai alors décidé d'installer TortoiseGit en utilisant le client openssh, afin que le fichier de configuration puisse être lu par le client ssh, et pour imiter la configuration git CLI.
J'ai choisi le ssh.exe livré avec msys git en tant que client ssh dans les paramètres de TortoiseGit.
Lorsque vous effectuez une git pull
, l'URL distante est maintenant résolue mais le mot de passe est demandé pendant que je m'attends à ce que l'authentification automatique de ssh-agent se produise.
Est-il possible de faire fonctionner TortoiseGit avec ssh-agent?
Ou informez-vous TortoiseGit (Plink) de . Ssh/config ?
Éditer # 1
En suivant les conseils de @VonC, j'ai configuré ma variable $ HOME.
Lorsque je clique sur Afficher les variables d'environnement dans TortoiseGit, j'ai maintenant:
HOME=C:\Documents and Settings\kraymer
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\kraymer
Mais git pull
nécessite encore que je saisisse la phrase secrète.
J'ai d'abord installé TortoiseGit avec Plink et utilisé Pageant pour charger la clé privée ssh. L'authentification automatique (Pageant) a fonctionné mais la configuration a échoué car TortoiseGit ne reconnaît pas l'url de git repos au format gitolite@gitbox/repo.git.
J'ai finalement trouvé une solution de contournement qui consiste à créer une session PuTTY avec le même nom que l'alias ssh (ie gitbox dans la question).
De cette façon, je peux cloner en tant que git clone gitbox/monrepo
dans la CLI et la syntaxe Origin
est correctement gérée par TortoiseGit.
Utilisez l'approche décrite dans l'article suivant: https://help.github.com/articles/working-with-ssh-key-passphrases
Le mot de passe ne sera demandé qu'une seule fois au démarrage de la session cygwin. !!! Avant de quitter la session cygwin, n'oubliez pas de tuer le processus ssh-agent (utilisez ps pour trouver le processus PID et kill -9).
Nous utilisons une approche distincte pour cygwin, car cygwin, pour une raison quelconque, ne voit pas les processus démarrés en externe dans l'environnement Windows.
Lien utile: http://dogbiscuit.org/mdub/weblog/Tech/WindowsSshAgent
Installez MsysGit. Installez TortoiseGit (cochez openssh au lieu de plink pendant l'installation). !!! Vérifiez les variables système. S'il y a une variable GIT_SSH présente - supprimez-la.
Allez dans TortoiseGit-> Paramètres-> Général
Définir le chemin Git exe vers/bin Définir le chemin de la DLL externe vers/mingw/bin
Allez dans TortoiseGit-> Settings-> Network Set SSH Client property to /bin/ssh.exe
Définissez la variable système SSH_AUTH_SOCKS = C:\temp.ssh-socket
Démarrez cmd.exe et exécutez les commandes suivantes (depuis que nous avons installé MsysGit, toutes les commandes suivantes sont accessibles dans cmd -/bin est ajouté à la variable PATH système):
# following command is required to execute for avoiding Address already bind message when ssh-agen is not started yet but .ssh-socket exists after previous agent session
rm "%SSH_AUTH_SOCK%"
# Starting ssh-agent
ssh-agent -a "%SSH_AUTH_SOCK%"
# Adding our openssh key
ssh-add "%USERPROFILE%\.ssh\id_rsa"
# Type password for your key
C'est ça. À partir de ce moment, vous pouvez exécuter git Push, git pull depuis TortoiseGit et MsysGit sans demander de phrase secrète.
Lorsque ssh-agent n'est plus requis, vous pouvez le supprimer via le gestionnaire de tâches Windows.
Aucune des réponses ci-dessus n'a fonctionné pour moi.
J'ai créé ce fichier batch pour résoudre le problème.
CALL "C:\Program Files\Git\cmd\start-ssh-agent.cmd"
SETX SSH_AUTH_SOCK "%SSH_AUTH_SOCK%"
SETX SSH_AGENT_PID "%SSH_AGENT_PID%"
Exécutez-le une fois et saisissez votre mot de passe.
Ensuite, vous pouvez utiliser tortoisegit avec openssh sans avoir à saisir votre mot de passe pour chaque opération.
Assurez-vous de lancer votre TortoiseGit dans un environnement où HOME
est défini, et référencez le répertoire parent de .ssh
.
Ceci est important car, sous Windows, HOME n'est pas défini par défaut.
Voir à titre d'exemple: " L'authentification échoue sous Windows XP avec git et tortoisegit ".
(Autres sources possibles: " Comment dire à Git pour Windows où trouver ma clé RSA privée? ")
Les explications ici étant un peu dépassées, j'ai décidé de poster ma solution.
J'utilise Git Bash et TortoiseGit 2.8.0 dans Windows 10, qui sont courants de nos jours.
J'ai mis ssh.exe
en tant que client SSH dans Settings->Network
comme expliqué dans les articles précédents.
J'ai créé un script avec les commandes suivantes, comme expliqué dans un commentaire précédent. Vous pouvez également définir une variable d'environnement HOME, au cas où votre système ne le ferait pas automatiquement. En supposant que votre domicile se trouve dans le lecteur H: \, vous pouvez ajouter les lignes suivantes:
SETX HOME /h
CALL "C:\Program Files\Git\cmd\start-ssh-agent.cmd"
SETX SSH_AUTH_SOCK "%SSH_AUTH_SOCK%"
SETX SSH_AGENT_PID "%SSH_AGENT_PID%"
J'ai ajouté le script en utilisant Win logo+R Shell:startup
dans le dossier de démarrage. Alternativement, vous pouvez ajouter le script au registre pour garantir qu'il s'exécute avant d'autres processus:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
Assurez-vous de taper exit
pour fermer la console et autoriser la définition de la variable pour les processus futurs.
Il semble y avoir toute une gamme d'options pour résoudre ce problème. Comme aucun des éléments ci-dessus n'a fonctionné pour moi, j'ai pensé partager ce qui m'a aidé.
Capture d'écran: Paramètres réseau/Git SSH Client
Dans Settings... -> Network -> SSH -> SSH client
, définissez le client sur C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
. En utilisant Pageant, vous êtes ensuite automatiquement authentifié comme prévu, sinon vous êtes invité à saisir votre phrase secrète de clé privée. Assurez-vous que l'option "Autoload PuTTY Key" est cochée dans la boîte de dialogue Push.