TortoiseGit avec openssh touche pas l'authentification à l'aide de ssh-agent
Je suis la mise en place d'un git de l'environnement sur Windows XP (msysGit 1.7.11, TortoiseGit 1.7.14) et en essayant d'atteindre les points suivants :
- connexion ssh sur un port différent que celui par défaut, 22
- ssh authentification gérée par ssh-agent
J'ai donc créer un ~/.ssh/config fichier :
Host gitbox
User gitolite
Hostname XX.XX.XX.XX
Port 154
PreferredAuthentications publickey
IdentityFile "/c/Documents and Settings/kraymer/.ssh/id_rsa"
Lors de l'utilisation de git bash CLI, tout fonctionne comme prévu.
Je suis aux prises avec TortoiseGit.
J'ai d'abord installé TortoiseGit avec Plink et à l'aide de Concours à la charge ssh clé privée. L'authentification automatique (Concours) a travaillé, mais le programme d'installation a été un échec, comme TortoiseGit ne reconnaissent pas git repos url formatée comme [email protected]/repo.git.
J'ai alors décidé d'installer TortoiseGit l'utilisation d'openssh client, de sorte que le config fichier peut être lu par le client ssh, et pour imiter le git de la CLI de l'installation.
J'ai choisi le ssh.exe livré avec msys git en tant que client ssh dans TortoiseGit paramètres.
Lors d'une git pull
, l'url distante est maintenant résolu, mais la phrase de passe mot de passe est demandé alors que je m'attends ssh-agent de l'authentification automatique à se produire.
Est-il possible de faire TortoiseGit travail avec ssh-agent ?
Ou faire TortoiseGit (Plink) courant de .ssh/config ?
Edit #1
Suivant @VonC conseils, j'ai configuré mon $HOME variable.
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
encore j'ai besoin d'entrer de mot de passe.
Vous devez vous connecter pour publier un commentaire.
Pas de réglages nécessaires.
Juste faire TortoiseGit point pour le même client ssh utilisé par git lui-même, voir la capture d'écran:
Cela devrait être
C:\Program Files\Git\usr\bin\ssh.exe
dans la dernière version de Git comme mentionné par Aleksey Kontsevich dans les commentaires.J'ai finalement trouvé une solution de contournement qui consiste à créer une session PuTTY avec le même nom que le ssh alias (c'est à dire gitbox dans la question).
De cette façon, je peux cloner comme
git clone gitbox/monrepo
à la CLI et leorigin
syntaxe est correctement géré par TortoiseGit.1) Cygwin
Utiliser l'approche décrite dans l'article suivant:
https://help.github.com/articles/working-with-ssh-key-passphrases
Mot de passe vous sera demandé qu'une seule fois sur la cygwin démarrage de la session.
!!! Avant de quitter la session cygwin n'oubliez pas de tuer les processus ssh-agent (ps pour trouver des processus de PID et kill -9).
Nous sommes à l'aide d'une approche pour cygwin, parce que cygwin par une raison quelconque ne pas voir le processus a commencé en externe dans l'environnement windows.
2, 3) MsysGit, TortoiseGit
Lien utile:
http://dogbiscuit.org/mdub/weblog/Tech/WindowsSshAgent
Installer MsysGit.
Installer TortoiseGit (vérifier openssh au lieu de plink lors de l'installation).
!!! Vérifier les systèmes de variables. Si il y a GIT_SSH variable d'aujourd'l'enlever.
Aller à TortoiseGit->Paramètres->Général
Ensemble Git exe Chemin vers /bin
Ensemble dll Externe chemin /mingw/bin
Aller à TortoiseGit->Paramètres->Réseau
Jeu de Client SSH propriété /bin/ssh.exe
Définir la variable système SSH_AUTH_SOCKS=C:\temp.ssh-socket
Commencer cmd.exe et exécuter les commandes suivantes(depuis que nous avons installé MsysGit toutes les commandes suivantes sont accessibles dans cmd - /bin est ajouté à la variable système PATH):
Que c'est. À partir de ce moment, vous pouvez exécuter la commande git push, git pull de TortoiseGit et MsysGit sans demander de mot de passe.
Quand ssh-agent n'est plus nécessaire, vous pouvez le tuer par le biais du gestionnaire des tâches windows.
Aucune des réponses ci-dessus, a travaillé pour moi.
J'ai créé ce fichier de commandes pour résoudre le problème.
Exécuter cette fois, et entrez votre mot de passe.
Ensuite, vous pouvez utiliser tortoisegit avec openssh sans avoir à entrer votre mot de passe pour chaque opération.
Assurez-vous de lancer votre TortoiseGit dans un environnement où
HOME
est défini, et la référence au répertoire parent de.ssh
.Cela est important car, sur les Fenêtres, la MAISON n'est pas défini par défaut.
Voir par exemple: "Auth échoue sur Windows XP avec git et tortoisegit".
(D'autres sources possibles: "Comment puis-je indiquer à Git pour Windows où trouver ma clé RSA?")
gitbox:repo.git
?%HOME%
est ainsi définie?Il semble y avoir toute une variété d'options pour résoudre ce problème. Comme aucun des ci-dessus ont travaillé pour moi, j'ai enseigné, je vous ferais partager ce qui les a aidé pour moi.
Capture d'écran: paramètres Réseau /Git Client SSH
Dans
Settings... -> Network -> SSH -> SSH client
, définir le client àC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
. À l'aide de Spectacle, vous êtes alors automatiquement authentifié comme prévu, sinon, vous êtes invité à entrer votre clé privée de mot de passe. Assurez-vous que le "Autoload Mastic Touche" option est cochée dans la commande de boîte de dialogue.GIT_SSH
est fixé àC:\Program Files\PuTTY\plink.exe
Étant donné que les explications sont ici un peu dépassé, j'ai décidé de poster ma solution.
Je suis en utilisant Git Bash et TortoiseGit 2.8.0 dans Windows 10, qui sont courantes de nos jours.
J'ai mis
ssh.exe
comme client SSH dansSettings->Network
comme expliqué dans les messages précédents.J'ai créé un script avec les commandes suivantes, comme expliqué dans un précédent commentaire. Vous pouvez aussi définir une variable d'environnement HOME, dans le cas où votre système ne le fait pas automatiquement. En supposant que votre maison est dans le lecteur H:\ vous pouvez ajouter les lignes suivantes:
J'ai ajouté le script à l'aide de Win logo+R
shell:startup
dans le dossier de démarrage. Alternativement, vous pouvez ajouter le script dans le registre de garantir qu'il s'exécute avant que d'autres processus:Assurez-vous de taper
exit
pour fermer la console et de permettre la variable à définir pour l'avenir.