TortoiseGit with openssh key not authenticating using ssh-agent
Solution 1
No tweaks needed.
Just make TortoiseGit point to the same ssh client used by git itself, see the screenshot:
This should be C:\Program Files\Git\usr\bin\ssh.exe
in latest version of Git as mentioned by Aleksey Kontsevich in the comments.
Solution 2
1) Cygwin
Use approach described in the following article: https://help.github.com/articles/working-with-ssh-key-passphrases
Password will be asked only once on the cygwin session startup. !!! Before exiting cygwin session don't forget to kill ssh-agent process (use ps for find process PID and kill -9).
We are using separate approach for cygwin, because cygwin by some reason doesn't see processes started externally in windows environment.
2, 3) MsysGit, TortoiseGit
Useful link: http://dogbiscuit.org/mdub/weblog/Tech/WindowsSshAgent
Install MsysGit. Install TortoiseGit (check openssh instead of plink during installation). !!! Check systems variables. If there is GIT_SSH variable present - remove it.
Go to TortoiseGit->Settings->General
Set Git exe Path to /bin Set External dll path to /mingw/bin
Go to TortoiseGit->Settings->Network Set SSH Client property to /bin/ssh.exe
Define system variable SSH_AUTH_SOCKS=C:\temp.ssh-socket
Start cmd.exe and execute following commands(since we installed MsysGit all following commands are accessible in cmd - /bin is added to system PATH variable):
# 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
That's it. From that moment you can execute git push, git pull from TortoiseGit and MsysGit without prompting passphrase.
When ssh-agent is no longer required you can kill it through windows task manager.
Solution 3
I first installed TortoiseGit with Plink and using Pageant to load ssh private key. The automatic authentication (Pageant) worked but setup was a fail as TortoiseGit don't recognize git repos url formatted as gitolite@gitbox/repo.git.
I finally found a workaround which consist to create a PuTTY session with the same name that the ssh alias (ie gitbox in the question).
This way I can clone as git clone gitbox/monrepo
in the CLI and the origin
syntax is correctly handled by TortoiseGit.
Solution 4
There seems to be a whole variety of options to solve this. As none of the above have worked for me, I tought I'd share what helped for me.
In Settings... -> Network -> SSH -> SSH client
, set the client to C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
. Using Pageant, you're then automatically authenticated as expected, otherwise you are prompted for your private key passphrase. Make sure the "Autoload Putty Key" option is checked in the push dialog.
Solution 5
None of the above answers worked for me.
I created this batch file to solve the problem.
CALL "C:\Program Files\Git\cmd\start-ssh-agent.cmd"
SETX SSH_AUTH_SOCK "%SSH_AUTH_SOCK%"
SETX SSH_AGENT_PID "%SSH_AGENT_PID%"
Run this once, and enter your passphrase.
Then you can use tortoisegit with openssh without having to enter your passphrase for every operation.
Related videos on Youtube
kraymer
Code @ github.com/Kraymer/ Blog @ kray.me Mate @ lichess.org/@/kraymer/all
Updated on July 09, 2022Comments
-
kraymer almost 2 years
I'm setting up a git environment on Windows XP (msysGit 1.7.11, TortoiseGit 1.7.14) and trying to achieve following points :
- ssh connection on a port different than default 22
- ssh authentification handled by ssh-agent
So I create a ~/.ssh/config file :
Host gitbox User gitolite Hostname XX.XX.XX.XX Port 154 PreferredAuthentications publickey IdentityFile "/c/Documents and Settings/kraymer/.ssh/id_rsa"
When using the git bash CLI, everything works as intended.
I'm struggling with TortoiseGit.
I first installed TortoiseGit with Plink and using Pageant to load ssh private key. The automatic authentication (Pageant) worked but setup was a fail as TortoiseGit don't recognize git repos url formatted as gitolite@gitbox/repo.git.I then decided to install TortoiseGit using openssh client, so the config file can be read by the ssh client, and to mimic the git CLI setup.
I picked the ssh.exe shipped with msys git as ssh client in TortoiseGit settings.
When doing agit pull
, the remote url is now resolved but the passphrase password is asked while I expect ssh-agent automatic authentication to occur.Is it possible to make TortoiseGit work with ssh-agent ?
Or make TortoiseGit (Plink) aware of .ssh/config ?Edit #1
Following @VonC advice I configured my $HOME variable.
When I click Show environment variables in TortoiseGit I now have :HOME=C:\Documents and Settings\kraymer HOMEDRIVE=C: HOMEPATH=\Documents and Settings\kraymer
But
git pull
still require I enter passphrase. -
kraymer over 11 yearsthought that was it but no, nothing changed (see Edit #1). Concerning serverfault.com/a/198614, just to be sure: mentioning the key for each remote is only needed if using Putty key, not openssh?
-
VonC over 11 years@kraymer did you try with the remote repo address:
gitbox:repo.git
? -
kraymer over 11 yearsWith openssh client -my prefered choice- I tried both (using full ssh://... adress and gitbox alias), and both work, that's just that it keeps asking me to enter the passphrase manually.
-
VonC over 11 years@kraymer and your ssh-agent does run from an environment where
%HOME%
is defined as well? -
Aleksey Kontsevich over 8 yearsIn latest Git version it is - C:\Program Files\Git\usr\bin\ssh.exe
-
Totte Karlsson over 8 yearsAfter much trouble, found this one and this is the way todo it IMHO. Just setup the identity in git-bash and use it in Tortoise
-
abhiyenta about 8 yearsthis step can probably be avoided if you choose to use the git ssh client instead of their "recommended" client when you install tortoise git.
-
Martin Capodici over 6 yearsSeems to be a bug in TortoiseGit (my version 2.5.0.0 64bit) where the OK button doesn't do anything if you change the SSH client. To work around I clicked the "Enable Proxy Server" as well. Then reopened the dialog to check the state is correct (it unchecked it again as I didn't enter any proxy settings)
-
cinico over 6 yearsI also couldn't make TortoiseGit to work with any of the solutions above. Only this worked for me. Thanks!
-
张实唯 about 6 yearsHi, this works for me but every time I try to communicate with remote it pops up a bunch of black windows (blank Windows terminals that disappears immediately). Am I the only one have this problem? Is there any way to make it more silent?
-
Haitham Sweilem about 6 yearsHi @张实唯, I'm not sure how to help with these pop-ups. Could you grab a screenshot of the contents of these windows? It helps to know what command they are running.
-
Chris over 5 yearsThis also worked for me on Windows 10 with 64-bit Git for Windows, since I use Putty + Pageant combination for SSH access to my company's servers. Also, my environmental variable
GIT_SSH
is set toC:\Program Files\PuTTY\plink.exe
-
vsync over 3 yearsThere's no
C:\Program Files\Git\usr\bin\ssh.exe
in my case, but foundC:\Windows\System32\OpenSSH\ssh.exe
which seems to work -
GoutamS almost 3 yearsHi @vsync #TortoiseGit in Network Section C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe To "C:\Users\{user}\AppData\Local\Programs\Git\usr\bin\ssh.exe"
-
GoutamS almost 3 years@vsync you can refer stackoverflow.com/questions/13516119/…