hbons / SparkleShare

Share and collaborate by syncing with any Git repository instantly. Linux, macOS, and Windows.
https://sparkleshare.org
Other
4.88k stars 576 forks source link

"No supported authentication methods available" when using other GIT tools #1047

Closed omniproc closed 11 years ago

omniproc commented 11 years ago

On Windows (7 x64) when using Sparkleshare along with other GIT tools like for example TortoiseGIT i keep getting this error. Tried it with my own GIT Repo as well as with Bitbucket and Github.

The debug_log looks like this: 22:09:06 | Controller | ssh-agent started, PID=4776 22:09:06 | Auth | Imported key 'C:\Users\USERNAME\AppData\Roaming\sparkleshare\MYKEY.key' 22:09:06 | Auth | The following keys may be used: 2048 HEX C:\Users\USERNAME\AppData\Roaming\sparkleshare\MYKEY.key (RSA) 22:09:06 | Cmd | sparkleshare | git log --since=1.month --raw --find-renames --date=iso --format=medium --no-color --no-merges 22:09:06 | Cmd | sparkleshare | git config --get filter.bin.clean 22:09:06 | ListenerFactory | Issued new listener for tcp://notifications.sparkleshare.org:443/ 22:09:06 | Cmd | sparkleshare | git config remote.origin.url "ssh://git@bitbucket.org/USERNAME/sparkleshare" 22:09:06 | Cmd | sparkleshare | git status --porcelain 22:09:07 | Listener | Subscribing to channel CHANNELID on tcp://notifications.sparkleshare.org:443/ 22:09:07 | Listener | Listening for announcements on tcp://notifications.sparkleshare.org:443/ 22:09:07 | Git | sparkleshare | Checking for remote changes... 22:09:07 | Cmd | sparkleshare | git rev-parse HEAD 22:09:07 | Cmd | sparkleshare | git ls-remote --heads --exit-code "ssh://git@bitbucket.org/USERNAME/sparkleshare" master 22:09:08 | Controller | Error fetching avatar for USERNAME@MAILPROVIDER.TLD: Der Remoteserver hat einen Fehler zurückgegeben: (404) Nicht gefunden.

Looking closer at it it seems to be a problem with the configuration. On TortoiseGIT i'm using plink so i've set up a environment variable called GIT_SSH which points to my TortoiseGIT installation. Unfortunately Sparkeshare also is looking for that variable and assumes i want to use plink together with Sparkeshare. Therefore, if i use puttygen to create a *.pkk out of the Sparkleshare keys, load it into pageant and restart Sparkleshare with pageant running, i'm not getting any errors anymore.

IMO it should be a Spakleshare configuration option which SSH client (including a specific path to the exe) should be used. Till then simply using another, app-specific environment variable (like sparkeshare_ssh) should do it. So I may use different SSH clients for different apps.

hbons commented 11 years ago

SparkleShare doesn't change GIT_SSH, it does set PLINK_PROTOCOL like so:

Environment.SetEnvironmentVariable ("PLINK_PROTOCOL", "ssh");

i'm not sure if this line is needed any longer...

omniproc commented 11 years ago

I'm not saying it does change GIT_SSH. But it's looking for it. Thus, if i have set GIT_SSH because i'm using some other GIT tools (e.g. tortoisegit or msysgit along with plink) then Sparkleshare will find that variable set and assume i want to use plink instead of the built-in openssh client. The problem here is that plink needs pageant to be running. without it running Sparkleshare will throw the error i reported.

Now: I don't want Sparkleshare to use plink. BUT i want to keep my GIT_SSH environment variable because my other tools depand on it.

The fact that GIT_SSH is set should not cause Sparkleshare to use plink. If i delete the GIT_SSH variable, everything works as expected.

hbons commented 11 years ago

i'm not sure this can be fixed. SparkleShare just assumes GIT_SSH contains the right thing to use SSH. as far as i know there isn't any other way to tell our copy of git to use the included ssh.exe...

omniproc commented 11 years ago

hmm should be reported to the git devs then i guess.