384

I am under a proxy and I am pushing in to git successfully for quite a while.
Now I am not able to push into git all of a sudden.
I have set the RSA key and the proxy and double checked them, with no avail and git is throwing me the error shown in the title of the page.

Vihari Piratla
  • 8,308
  • 4
  • 20
  • 26
  • 21
    Create a hotspot on your mobile device, connect via your mobile device, then `git push`. Worked for me. – zundi Sep 12 '17 at 19:19
  • 1
    For Jenkins, see: [Why is Jenkins failing when fetching from git?](https://stackoverflow.com/q/24813816/55075) – kenorb Jul 29 '19 at 22:17
  • 5
    The same problem happened to me in the UK with Virgin Media. I tried to push/pull to GitHub via ssh at home and no luck but at work was fine. So I realised that I got problems with my ISP. The simple fix for me was to use Cloudflare DNS `1.1.1.1` instead of a default one that's why @zundi succeed through a mobile hotspot. – Vladyslav Krylasov Mar 18 '20 at 12:59
  • 3
    This worked for me -> https://gist.github.com/Tamal/1cc77f88ef3e900aeae65f0e5e504794 – Imran May 03 '21 at 18:41
  • Very weird! But I closed my Postman and it solved it!!! (Win10) – aderchox Dec 14 '21 at 21:06
  • @zundi I'm at an airbnb place and the host has done some funky things to his wifi. Thanks to you I was able to push. – Artur Müller Romanov Mar 18 '22 at 17:29
  • @zundi weird, but worked! Thanks! – jsibs Aug 09 '22 at 17:39
  • @VladyslavKrylasov I have had the exact same problem, also uk virgin media, and tried your approach. Worked perfectly! Thanks! – Joao Pincho Sep 25 '22 at 18:39

31 Answers31

680

For my case none of the suggested solutions worked so I tried to fix it myself and I got it resolved.

For me I am getting this error on my AWS EC2 UBUNTU instance, what I did to resolve it was to edit the ssh config (or add it if it does not exist).

sudo nano ~/.ssh/config

And I added the following

Host github.com
 Hostname ssh.github.com
 Port 443

Then, run the command ssh -T git@github.com to confirm if the issue is fixed.

According to this

Sometimes, firewalls refuse to allow SSH connections entirely. If using HTTPS cloning with credential caching is not an option, you can attempt to clone using an SSH connection made over the HTTPS port. Most firewall rules should allow this, but proxy servers may interfere

Hopefully this helps anyone else who's having the same issue I did.

Mahan_F
  • 7,839
  • 2
  • 14
  • 26
  • 9
    This solution worked fine for me, although it didn't solve the issue for GitLab. In that case, please consider that GitLab.com runs a second SSH server that listens on the commonly used port 443, which is unlikely to be firewalled. All you have to do is edit your `~/.ssh/config` and change the way you connect to GitLab.com. In that case, see this article: https://about.gitlab.com/2016/02/18/gitlab-dot-com-now-supports-an-alternate-git-plus-ssh-port/ – cavalcantelucas Dec 05 '18 at 03:14
  • 2
    Hi, i had a same problem, my router is from NET and him block the 22 port. That config solved my problem definitely – Pedro Soares Jan 14 '19 at 17:40
  • It is not `git` config but `ssh` config – GuyT Aug 27 '19 at 04:26
  • 3
    After hours of finding anwers... you're CHAMP, anyway why do we need to change github.com to ssh.github.com? I still don't get it – Robert Tirta Nov 20 '19 at 22:40
  • For create a ssh config file : https://linuxize.com/post/using-the-ssh-config-file/ – DLx Sep 16 '20 at 08:25
  • This solution worked for me as I'm working from an air bnb and I don't know which ports the home's router blocks. Thanks a lot! – Pericolo Nov 09 '20 at 15:30
  • It works perfectly!! It should be the right answer! – Anh-Thi DINH Nov 09 '20 at 15:39
  • I just stopped my router wifi and switched on my phone hotspot, connect to laptop, then push again, yes it's solved!! thank you – Sabbir Sobhani Aug 19 '21 at 16:49
  • I had this problem for a long time, I thought it was my router that is blocking the ports, until I dicifi investigate well and download that possibility. Thank you very much, now it works very well. – MrEduar Aug 28 '21 at 19:04
  • I did this and now get this error: kex_exchange_identification: Connection closed by remote host....any ideas? – Samantha Garcia Dec 08 '21 at 14:52
  • For who didn't install nano (maybe for windows user), you could try `vim ~/.ssh/config` to edit the config. – paulwen Dec 14 '22 at 11:25
  • If you put `RequestTTY no` and `User git` in your config, you don't have to type `-T` or `git@` in your `ssh` command. – Michael Feb 08 '23 at 22:06
  • https://docs.github.com/en/authentication/troubleshooting-ssh/using-ssh-over-the-https-port – solstice333 Mar 08 '23 at 22:03
  • It REALLY helps me. – Margaux Jul 04 '23 at 08:46
  • Thank you very much, this solution worked for me. – Vahid Sep 01 '23 at 06:31
331

The reason could be the firewall modification as you are under a network.(In which case they may deliberately block some ports)
To double check if this is the reason ... do

ssh -T git@github.com

this should timeout. If that's the case use http protocol instead of ssh this way
just change your url in the config file to http.
Here is how :-

git config --local -e

change entry of

 url = git@github.com:username/repo.git

to

url = https://github.com/username/repo.git
lantrix
  • 441
  • 9
  • 17
Vihari Piratla
  • 8,308
  • 4
  • 20
  • 26
  • 15
    I had that issue once, but restarting my computer solved it. – Kevin Lee Jan 09 '16 at 17:20
  • 3
    fatal: unable to access 'https://gitlab.com:******.git/': Port number ended with 'f' – Fakher Sep 05 '17 at 14:06
  • I had to remove the .git from the url in order for this to work for me. url = https://github.com/username/repo/ – Jesse Buss Dec 21 '17 at 15:38
  • restarting my system did the job...sometimes your proxy gets updated once your systems restarts. – Max Jun 06 '18 at 10:37
  • 38
    using https instead for ssh is not the right solution. There must a way to set proxy in git config and in ssh settings to solve this. – shijin Dec 01 '18 at 15:49
  • @VihariPiratla ok this works but how can i solve the port 22 unreacheable , so i can keep using ssh key – valik Dec 29 '18 at 16:33
  • This happens when I am in my university's network, it blocks some websites. Changing to http or changing the network solves the issue. – Soon Santos Jan 14 '19 at 10:33
  • 7
    This disables using the ssh key, doesn't it? – Jason Jun 07 '19 at 13:24
  • 17
    Virgin Media UK has a child safe mode, which I had to disable. – Finlay Percy Oct 03 '19 at 14:54
  • As he suggested, I directly cloned my repo with git `https://github.com/USERNAME/REPO.git`!! – Wey Shi Mar 29 '20 at 05:34
  • 1
    As @FinlayPercy mentioned, it was the Virgin Media wifi causing the issue. Used Personal Hotspot from Phone network and it worked. I was trying to push repo to github – Naishta Nov 22 '22 at 22:10
67

inside the .ssh folder Create "config" file

Host github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443

Host gitlab.com
Hostname altssh.gitlab.com
User git
Port 443
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Isaque Elcio
  • 1,029
  • 9
  • 4
51

Basic URL Rewriting

Git provides a way to rewrite URLs using git config. Simply issue the following command:

git config --global url."https://".insteadOf git://

Now, as if by magic, all git commands will perform a substitution of git:// to https://

source: git:// protocol blocked by company, how can I get around that?

Community
  • 1
  • 1
Michaël P
  • 643
  • 5
  • 3
  • 2
    Thanks! Ours was during the Jenkins build so I couldn't manually edit the git file (I don't have the git credentials for the jenkins account) - so this was very useful. – Phil Mar 27 '15 at 15:32
  • 2
    This is great. I've added git aliases for each to easily switch – random-forest-cat Mar 31 '15 at 23:59
  • 20
    Concerning github, the command should be: `git config --global url."https://github.com/".insteadOf git@github.com:`. Notice the differences: `@` becomes `//` and `:` becomes `/`. – Frodon Jan 21 '16 at 14:38
  • 3
    Is this just replacing SSH with HTTPS ? This is no real solution. – Chris Neve Mar 16 '21 at 13:16
21

I faced the same problem and couldn't find a working solution. I faced this problem while setting up a local server and the git couldn't connect through my proxy network but my workstation could. This was the output when I ran the command ssh -vT git@github.com

ubuntu@server:~$ ssh -vT git@github.com
OpenSSH_7.2p2 Ubuntu-4ubuntu2.8, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /home/ubuntu/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [13.234.176.102] port 22.

So I tried using an SSH connection made over the HTTPS port by editing the config file ~/.ssh/config but to no avail.

Host github.com
 Hostname ssh.github.com
 Port 443

Finally, I found this article which solved and exposed the real problem.

# github.com
Host github.com
    Hostname ssh.github.com
    ProxyCommand nc -X connect -x <PROXY-HOST>:<PORT> %h %p
    Port 443
    ServerAliveInterval 20
    User git

This is my config file and now git works perfectly well through ssh!

Animesh Singh
  • 333
  • 2
  • 6
15

Quick workaround: try switching to a different network

I experienced this problem while on a hotspot (3/4G connection). Switching to a different connection (WiFi) resolved it, but it's just a workaround - I didn't get the chance to get to the bottom of the issue so the other answers might be more interesting to determine the underlying issue

kip2
  • 6,473
  • 4
  • 55
  • 72
9

For me, the problem was from ISP side. The Port number was not enabled by the Internet Service Provider. So asked them to enable the port number over my network and it started working.
Only to test: Connect to mobile hotspot and type ssh -T git@bitbucket.org or git pull.
If it works, then ask your ISP to enable the port.

Anushree
  • 225
  • 3
  • 4
  • This resolved the issue for me. Switched to a 4G hotspot and `git push` worked. But I turned off the hotspot, switched back to the old network...and now git works again. Who knows? – AlainD Jan 25 '22 at 17:07
8

Ok Try this ssh -T -p 443 git@ssh.github.com instead of ssh -T git@github.com

Gokul
  • 164
  • 1
  • 11
5

This answer is based on the comment to the main question from @zundi (to whom credit should go, thanks zundi):

  • Create a hotspot on your mobile device and connect to the hotspot
  • git push
  • Turn off the hotspot on your mobile device and reconnect to the original network
  • git push continues to work

I do not know why temporarily connecting to a hotspot magically "kickstarts" the original network connection.

AlainD
  • 5,413
  • 6
  • 45
  • 99
4

Execute:

nc -v -z <git-repository> <port>

Your output should look like:

"Connection to <git-repository> <port> port [tcp/*] succeeded!"

If you get:

connect to <git-repository> <port> (tcp) failed: Connection timed out

You need to edit your ~/.ssh/config file. Add something like the following:

Host example.com
Port 1234
Dorian
  • 22,759
  • 8
  • 120
  • 116
ameen
  • 59
  • 1
  • 7
    I'm not sure everyone is going to have `nc` installed. What is that supposed to be? Netcat or something? – Hack-R Apr 08 '18 at 21:55
4

In a similar failure mode as Ludder, I was getting this error when I hadn't yet signed in to the correct company VPN. :facepalm:

Mad Bernard
  • 363
  • 1
  • 7
  • 16
3

I was having this same issue, but the answer I found was different, thought someone might come across this issue, so here is my solution.

I had to whitelist 2 IPs for port 22, 80, 443, and 9418:

  • 192.30.252.0/22

  • 185.199.108.0/22

In case these IP's don't work, it might be because they got updated, you can find the most current ones on this page.

Artur Grigio
  • 5,185
  • 8
  • 45
  • 65
3

My computer was unable to connect port 22 while connecting to Github. I never had this issue with bitbucket. If you have both GitHub and bitbucket then

Host bitbucket.org
Hostname  altssh.bitbucket.org
Port  443


Host github.com
Hostname ssh.github.com
Port 443

ref

It basically connects SSH in 443 port instead of 22.

kta
  • 19,412
  • 7
  • 65
  • 47
1

The answer above gave me the information needed to resolve this issue. In my case the url was incorrectly starting with ssh:///

To check the url in your git config is correct, open the git config file :-

git config --local -e

Check the url entry. It should NOT have ssh:/// at the start.

Incorrect entry:

 url = ssh:///git@github.com:username/repo.git

Correct entry:

 url = git@github.com:username/repo.git

If your url is correct, then the next step would be to try the answer above that suggests changing protocol to http.

Manda QoP
  • 11
  • 4
1

Changing the repo url from ssh to https is not very meaningful to me. As I prefer ssh over https because of some sort of extra benefits which I don't want to discard. Above answers are pretty good and accurate. If you face this problem in GitLab, please go to their official documentation page and change your config file like that.

Host gitlab.com
  Hostname altssh.gitlab.com
  User git
  Port 443
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/gitlab
1

Restart the computer solved it for me.
Git version: 2.27.0.windows.1
OS version: Windows 10

Wenfang Du
  • 8,804
  • 9
  • 59
  • 90
1

The main reason was the change from the proxy installed by the company recently, which has blocked other ssh connections other than those to the company domain.

I was able to connect successfully by following these steps:

  1. Double checked that the issue is what I am assuming by ssh -T git@github.com

It should end up in a timeout.

  1. Edited the local remote URL by

ssh config --local -e

and from

url=git@github.com:asheeshjanghu/Journal.git

to

url=https://github.com/asheeshjanghu/Journal.git

The important point is that in the url you have to change at 2 places.

from git@ to https:// and from github:username to github/username

In the end verify by doing a git fetch

1

In my case the problem was caused by a setting that I had changed on my Router a day before. So on my Router, I just had to revert the setting Isolation to disable and it has fixed my issue.

enter image description here

user1941537
  • 6,097
  • 14
  • 52
  • 99
1

For my case, I didn't change anything in my PC. My workaround was:

  • Restart the PC.
  • Connect PC network with mobile hotspot or use Cloudflare WARP for private network.
  • Do your work and chill :D
Abdullah
  • 21
  • 7
1

If your ssh -T git@github.com connects and does not time out but you're still getting the error when trying to git commit:

ssh: connect to host sign port 22: Operation timed out?

fatal: failed to write commit object:

Ive been able to fix the issue by disabling gpgsign in .gitconfig

[commit]
    gpgsign = false

Running MacOs, Not under proxy. Im guessing the complete solution is to generate and re assign new gpg keys but ive been at this for hours so perhaps tomorrow.

Ohmnitude
  • 161
  • 1
  • 7
0

ISSUE

Step to produce issue: git clone git@github.com:sramachand71/test.git for the first time in the new laptop

ERROR

ssh: connect to host github.com port 22: Connection timed out
 fatal: Could not read from remote repository.

 Please make sure you have the correct access rights
 and the repository exists.

SOLUTION

for the first time in the system to clone we need to give double quotes for the clone command.

$ git clone "git@github.com:sramachand71/test.git"

I face this issue in the system even after everything was correct but noticed at last that double quote is must for url "repository_url.git" for first time or new user in the system.

Michael
  • 8,362
  • 6
  • 61
  • 88
0

I had this issue on a server of mine that was set up with it's regular IP and a failover IP. The failover IP did not point to the server at this time. I had to remove the failover IP from the server configuration in /etc/netplan/01-netcfg.yaml. Pointing the failover IP to that server would have probably solved the issue as well.

Robin
  • 3,512
  • 10
  • 39
  • 73
0

So I was having this same problem (not behind a proxy) and came across this question. Here's what I did to fix it:

Tried running ssh -T git@github.com and it did time out, but adding -o KexAlgorithms=ecdh-sha2-nistp521 made a successful connection (found from this answer to a semi-related question).

To permanently fix this, I just added a line KexAlgorithms=ecdh-sha2-nistp521 under github.com in my ~/.ssh/config. Everything seems to work fine now.

Klaus Haukenstein
  • 570
  • 1
  • 5
  • 10
  • That sets the Kex Algm to just the (comma-separated) arguments. If you want to _add_ some kex, you can prepend to the default list by starting your arguments with `^` like `^nist1,ed25519,etc`. `+` will append to and `-` will remove from the default list. – Michael Feb 23 '23 at 15:22
0

If you are in windows, move into the directory where you stored your ssh key, and try again, it worked for me.

0

What solved it for me was doing ssh-add on the key file.

ssh-add C:/Path/To/Key.pem

C:/Users/User/.ssh/config:

Host sshapp
    Hostname ssh.github.com
    IdentityFile C:/Path/To/Key.pem
    Port 443

Then clone using:

>git clone git@sshapp:<git_user>/app.git
Cloning into 'app'...
The authenticity of host '[ssh.github.com]:443 ([140.82.121.35]:443)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6T.....vCOqU.
justadev
  • 1,168
  • 1
  • 17
  • 32
0

I had this issue when working over a public library's wifi.

Running PowerShell test-netconnection github.com -port 22 showed that they were blocking outbound connections on that port (lots of places seem to only allow HTTP ports; i.e. 80 and 443).

Thankfully, GitHub allows you to access SSH over port 443 too: documentation

Instead of running git clone git@github.com:myOrg/myRepo.git, make the following tweaks:

  • Add ssh:// to the start of the URL
  • Connect to the ssh subdomain (i.e. ssh.github.com instead of just github.com)
  • Add the port after the hostname: i.e. :443.
  • Amend the colon before your org/username to a slash.

So for the above example you'd run: git clone ssh://git@ssh.github.com:443/myOrg/myRepo.git

This may give you a warning about the authenticity of the host; but (assuming you're happy*), answering YES to that will allow the command to run. To decide if you should answer YES, check the fingerprint given in this warning against GitHub's published fingerprints.

JohnLBevan
  • 22,735
  • 13
  • 96
  • 178
0

In my case,

  1. I backup the known_hosts to known_hosts.bk
  2. I clear all content of the old known_hosts.

Maybe it did remember the old host when I ssh using the other .pem file.

  • Error

enter image description here

  • Success

enter image description here

Nguyễn Văn Phong
  • 13,506
  • 17
  • 39
  • 56
-1

When I accidentally switched to a guest wifi network I got this error. Had to switch back to my default wifi network.

Ludder
  • 2,665
  • 1
  • 25
  • 26
-1

Refreshing my Internet connection worked for me.

Also if you use mobile hotspot - restart of mobile device was solution in my case.

Daniel Garmoshka
  • 5,849
  • 39
  • 40
Winnie Nyambura
  • 105
  • 1
  • 6
-1

Suggest to check the Internet connection or connect to another connection.

TiiGRUS
  • 85
  • 1
  • 4
  • This does not provide an answer to the question. Once you have sufficient [reputation](https://stackoverflow.com/help/whats-reputation) you will be able to [comment on any post](https://stackoverflow.com/help/privileges/comment); instead, [provide answers that don't require clarification from the asker](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can-i-do-instead). - [From Review](/review/late-answers/31393769) – tjheslin1 Mar 30 '22 at 16:53
-2

I had this issue for 2 hours and it turns out removing the "s" from https and just do:

git clone -b <branchName> http:<projecturl>

Fixed it.

aPurpleDev
  • 123
  • 1
  • 12