TortoiseGit avec clé openssh ne s'authentifiant pas à l'aide de ssh-agent
je mets en place un environnement git sur Windows XP (msysGit 1.7.11, TortoiseGit 1.7.14) et j'essaie d'atteindre les points suivants:
- connexion ssh sur un port différent de celui par défaut 22
- authentification ssh traitée par ssh-agent
donc je crée 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"
en utilisant le Git bash CLI, tout fonctionne comme destiné.
je lutte avec TortoiseGit.
J'ai d'abord installé TortoiseGit avec Plink et en utilisant Pageant pour charger SSH clé privée. L'authentification automatique (concours) a fonctionné mais la configuration a échoué car TortoiseGit ne reconnaît pas l'url de Git repos formatée en gitolite@gitbox/repo.git .
j'ai alors décidé d'installer TortoiseGit en utilisant le client openssh, donc le fichier config peut être lu par le client ssh, et imiter la configuration de Git CLI.
J'ai choisi le ssh.exe livré avec msys git comme client ssh dans les paramètres de TortoiseGit.
Lorsque vous faites un git pull
, l'url distante est maintenant résolue, mais le mot de passe passphrase est demandé alors que je m'attends à ce que l'authentification automatique ssh-agent se produise.
est-il possible de faire TortoiseGit travaille avec ssh-agent ?
Ou faites TortoiseGit (Plink) conscient de .SSH / config ?
Edit #1
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 Settingskraymer
HOMEDRIVE=C:
HOMEPATH=Documents and Settingskraymer
mais git pull
exigent toujours d'entrer phrase.
6 réponses
pas besoin de retouches.
il suffit de faire pointer TortoiseGit vers le même client ssh utilisé par git lui-même, voir la capture d'écran:
Ce qui 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 d'abord installé TortoiseGit avec Plink et en utilisant Pageant pour charger SSH clé privée. L'authentification automatique (concours) a fonctionné mais la configuration a échoué car TortoiseGit ne reconnaît pas l'url de Git repos formatée en gitolite@gitbox/repo.Git.
j'ai finalement trouvé une solution qui consiste à créer une session PuTTY avec le même nom que l'alias ssh (c'est-à-dire gitbox dans la question).
De cette façon, je peux cloner comme git clone gitbox/monrepo
dans le CLI et la syntaxe origin
est correctement traitée par TortoiseGit.
1) Cygwin
Utiliser l'approche décrite dans l'article suivant: https://help.github.com/articles/working-with-ssh-key-passphrases
Le mot de passene 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 find process PID et kill -9).
nous utilisons une approche séparée pour cygwin, parce que cygwin par une raison quelconque ne voit pas les processus lancés à l'extérieur dans l'environnement windows.
2, 3) MsysGit, TortoiseGit
lien utile: http://dogbiscuit.org/mdub/weblog/Tech/WindowsSshAgent
Install MsysGit. Installez TortoiseGit (cochez openssh au lieu de plink pendant l'installation). !!! Vérifier les variables des systèmes. Si la variable GIT_SSH est présente, supprimez-la.
TortoiseGit - > Réglages - > Généralités
Set Git exe Path to / bin Définir le chemin dll externe vers/mingw / bin
allez à TortoiseGit- > paramètres - > réseau Définir la propriété du Client SSH à /bin / ssh.exe
définit la variable système SSH_AUTH_SOCKS=C:\temp.SSH-socket
Start 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 de chemin du 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 à partir de TortoiseGit et MsysGit sans demander passphrase.
lorsque ssh-agent n'est plus nécessaire, vous pouvez le tuer via windows task manager.
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 cette fois, et entrez votre phrase de passe.
alors vous pouvez utiliser tortoisegit avec openssh sans avoir à entrer votre phrase de passe pour chaque opération.
assurez-vous de lancer votre TortoiseGit dans un environnement où HOME
est défini, et référez-vous au répertoire parent de .ssh
.
C'est important car, sur Windows, la maison n'est pas définie par défaut.
voir comme exemple: " Auth ne fonctionne pas sur Windows XP avec git et tortoisegit ".
(D'autres sources possibles: " Comment puis-je indiquer à Git pour Windows où trouver mon RSA clé? ")
il semble y avoir une grande variété d'options pour résoudre ce problème. Comme aucun des éléments ci-dessus n'a fonctionné pour moi, j'ai pensé que je partagerais ce qui m'a aidé.
Capture d'écran: paramètres Réseau / Git Client SSH
dans Settings... -> Network -> SSH -> SSH client
, mettez le client sur C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
. En utilisant Pageant, vous êtes alors automatiquement authentifié comme prévu, sinon vous êtes invité pour votre phrase clé privée. Assurez-vous que le " Autoload Putty Key" l'option est cochée dans la boîte de dialogue push.