I have a Git repository that I pull using a path similar to this:
git pull ssh://username@host.com:1234/path/to/repository.git
When GitExtensions then tries to pull from the repository using plink, it makes this call:
plink -T username@host.com:/path/to/repository.git
This ends up failing because it’s actually pinging port #22, and not #1234.
The right call to make would be
plink -T -P 1234 username@host.com:/path/to/repository.git
If I create an alias "hostCom" in my ~/.ssh/config, it seems to work correctly (connecting to #1234) if I just do this:
plink -T username@hostCom
But as soon as I add the path to the Git repository too, it goes to #22 again.
Another option I tried is to create a session in PuTTY. Let’s call it "hostPutty", and set the default port there, etc. The bottom line ends up being the same though: Can’t combine path to Git repository with a custom port.
How do I combine all the parts to make them work?
And how come OpenSSH can deal with the problem, but PuTTY can’t? The only problem with OpenSSH is that it keeps asking me for the password for the private key on every connection attempt (and I don’t want to create a private key without a password).
I got it figured out.
Here’s what got me down the wrong path:
Here’s how you get it working:
Use the "full" command to pull, without any host aliases that would allow you to not specify the port, etc., in the example above. If the port is missing, and there’s just a colon, Git treats it as a path separator, and ssh as the port delimiter (so they bite each fairly bad).
git clone ssh://username@host.com:1234/path/to/repository.git
If you do that, Git and plink actually figure things out right!
If you don’t do it this way, you might run into all kinds of problems like: