172

The process of setting up a GitHub account works just fine but it doesn't work when I try pushing my repository to GitHub. The error message it shows is as follows:

ssh: Could not resolve hostname github.com: Name or service not known fatal: The remote end hung up unexpectedly 

I have tried changing RSA keys and all but still getting error.

What causes this error?

6
  • 8
    I have seen this problem too, but it seems to be intermittent - I waited 10 minutes then it went away Commented Oct 13, 2013 at 4:53
  • This answer worked for me. Commented May 12, 2014 at 11:08
  • 3
    It seems like for me, github does not support cloning over ipv6. I forced ipv4 by modifying ~/.ssh/config (you will have to figure out the formatting by yourself since I can't do that in the comments): Host github.com *.github.com AddressFamily inet Commented Nov 2, 2014 at 10:59
  • 1
    As implied by one of the answers it can be a transient issue requiring no change on your part, but waiting for the issue on the side of github.com to resolve. Commented Sep 4, 2016 at 15:16
  • 1
    just wait a few seconds and retry Commented Oct 16, 2022 at 12:24

20 Answers 20

153

Recently, I have seen this problem too. Below, you have my solution:

  1. ping github.com, if ping failed, it is a DNS error.

  2. sudo vim /etc/resolv.conf, then add:

    nameserver 8.8.8.8

    nameserver 8.8.4.4

Or it can be a genuine network issue. Restart your network-manager using sudo service network-manager restart or fix it up.

Sign up to request clarification or add additional context in comments.

6 Comments

@JsonBruce and Fahmi: to know more about it why it worked read how DNS works, just to give you heads up, when you make any request it first checks the local cache for the "IP resolution" but if it's not there then it tries to resolve from nameserver configured in your /etc/resolv.conf (in case of UNIX/ Linux). Check en.wikipedia.org/wiki/Name_server
@FahmiRamadhan I believe that when github enables 3rd party DDOS protection their dns records and/or servers will change, above actions will flush your dns records, pointing you to the DDOS protected servers. (I've added this to my answer)
adding nameservers to /etc/resolv.conf fixed the issue for me! Before it had only the router nameserver, which was apparantly not working correctly.
Resetting device Network works for me
faced it on ububtu 22.04 vm. reboot solved it.
|
84

I have just received this error after switching from HTTPS to SSH (for my origin remote). To fix, I simply ran the following command (for each repo):

ssh -T [email protected]

Upon receiving a successful response, I could fetch/push to the repo with ssh.

I took that command from Git's Testing your SSH connection guide, which is part of the greater Connecting to GitHub with with SSH guide.

4 Comments

Getting issues even after executing this command $ ssh -T [email protected] [email protected]: Permission denied (publickey).
I was able to succeed in testing my connection, but fetch still failed with OP's error. Turns out I had added ssh:// protocol to the SSH repo URL that GitHub gave me, and this caused it to fail. Removing the old origin and re-adding using the exact SSH URL from GitHub fixed it.
ssh: Could not resolve hostname github.com: nodename nor servname provided, or not known
this fixed my issue stat! thank you!
24

Github is currently (on 22nd of feb 2012, again on 5th of sept 2016) having some problems with pushing/pulling over ssh. I'm experiencing the same problems.

Pulling over https is working thought.

You can try pushing over https by following this guide: https://help.github.com/articles/using-ssh-over-the-https-port/

This would only help if https is not affected. you can try and look at https://www.githubstatus.com/ to see if there are any reported issues at github's end.

If github is currently being DDOS'ed they may choose to enable DDOS protection from a 3rd party. This would mean they change their dns records and/or servers if these are part of the DDOS.

Flushing your dns, changing your dns server or restarting your network (which will possibly flush your dns cache) as stated in the other answer might help in fixing the issue for you if github is mitigating a DDOS.

Or if you have problems with your ssh setup you can find the ssh faq here: http://help.github.com/ssh-issues/

Other ways to flush your dns, in windows in your terminal

ipconfig /flushdns 

on macos

dscacheutil -flushcache 

on linux

service nscd restart 

or simply rebooting ;)

Comments

13

Each of this could help

  1. Confirm if you are still connected using ssh. Type this:
ssh -T [email protected] 

If you get the message that you were successfully authenticated and that GitHub doesn't support shell access, then you can try pushing your code again.

  1. If the above did not work, create a new ssh key, add it to Github, and run the command again:
ssh -T [email protected] 

5 Comments

literally what is the "[email protected]", what should it be, give an example, there are email address, users names, repos that can be added in this infinite "[email protected]". This is typical github, you need to read their minds.
Hi @BrianWiley, [email protected] is the email Github has provided for users to check if your generated SSH connection between your local machine and Github is working.
thanks i realized that since there was no <> you literally just type that
I am online as I am reading this, and I still have the error message while doing ssh -T [email protected]. This answer didn't helped me
I ran this and then it asked for my ssh password and after i typed that in I was able to use git again in my terminal
7

I was having this exact issue and all that I had to do was to restart my desktop

2 Comments

After ping fails, I restarted the machine and everything works fine. +1
Yes, telnet and ping failed, no way to work, I restarted and it worked.
5

Can you try this approach,

echo -e "[network]\ngenerateResolvConf = false\n" | sudo tee /etc/wsl.conf echo -e "nameserver 8.8.8.8\n" | sudo tee /etc/resolv.conf 

Reference

2 Comments

This solution is the one that worked for me!
Thanks, that solution works fine for me
4

In my case I had misspelled something when manually adding the remote origin with git remote add origin ....

It's worth checking your remote is correct with git remote -v

Comments

2

If you use Windows 10 and you are facing this error, try using ssh -T [email protected] to authenticate again to Github. It worked like charm for me.

Comments

2

You can check which the key is being used by trying to connect to [email protected]:

$ ssh -vT [email protected] > ... > debug1: identity file /Users/you/.ssh/id_rsa type -1 > debug1: identity file /Users/you/.ssh/id_rsa-cert type -1 > debug1: identity file /Users/you/.ssh/id_dsa type -1 > debug1: identity file /Users/you/.ssh/id_dsa-cert type -1 > ... > debug1: Authentications that can continue: publickey > debug1: Next authentication method: publickey > debug1: Trying private key: /Users/you/.ssh/id_rsa > debug1: Trying private key: /Users/you/.ssh/id_dsa > debug1: No more authentication methods to try. > Permission denied (publickey). 

In that example, we did not have any keys for SSH to use. The "-1" at the end of the "identity file" lines means SSH couldn't find a file to use. Later on, the "Trying private key" lines also indicate that no file was found. If a file existed, those lines would be "1" and "Offering public key", respectively:

$ ssh -vT [email protected] > ... > debug1: identity file /Users/you/.ssh/id_rsa type 1 > ... > debug1: Authentications that can continue: publickey > debug1: Next authentication method: publickey > debug1: Offering RSA public key: /Users/you/.ssh/id_rsa 

Verify the public key is attached to your account

You must provide your public key to GitHub to establish a secure connection.

  1. Open Terminal.

  2. Start SSH agent in the background.

    $ eval "$(ssh-agent -s)"

    Agent pid 59566

  3. Find and take a note of your public key fingerprint.

    $ ssh-add -l -E sha256

    2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)

  4. In the upper-right corner of any github page, click your profile photo, then click Settings.

  5. In the user settings sidebar, click SSH and GPG keys.

  6. Compare the list of SSH keys with the output from the ssh-add command.

  7. If you don't see your public key in GitHub, you'll need to add your SSH key to GitHub to associate it with your computer.

Follow this link for details

1 Comment

ssh -vT [email protected] worked for me, it made the system asking the key phrase, and after, in cloning, asking the same and cloning my repo. Thanks.
1

Sometimes restarting your machine is also a good idea. When I faced the same issue after restarting the system, it told me that your private key is locked and github cant access that.. so enter your password to do that.. I entered the password and then the issue was resolved.

Comments

1

I was using "WSL: Ubuntu" via VS code, closing my connection and then restarting worked for me.enter image description here

Comments

1

The error is actually pretty clear:

Could not resolve hostname github.com: Name or service not known 

The point is, for a connection you need an IP address, so you first have to convert github.com to one. For that, programs use your OS' DNS resolver. If that resolver has an issue (which is often just temporary due to some network changes), you can't resolve names to IP addresses and this happens.

For verification, use host github.com which should also give you an error that it can't resolve the name. If that is not the case, retry using Git, the error could have been temporary or it could be something completely different.

Otherwise, try these steps:

  • Use ping -O 8.8.8.8.
  • If that works, try host github.com 8.8.8.8, which should be able to resolve the name.
  • With the resolved IP address, try ping -O <address>.

FYI, 8.8.8.8 is a public DNS server operated by Google with an easy to remember IP address. You could use any other, but you must know the IP address and not just the name.

The first step is to check that you generally can reach the internet. The second tries to resolve the name via the DNS server. The third one checks general connectivity to github.com. If all work, it's a strong indication the problem is not with github.com or the internet itself. Instead, it's something caused by your OS' DNS resolver or local network.

In many cases, disabling and re-enabling your network configuration will fix this. Alternatively, switch to a different network. In desperate cases, rebooting your machine to restart the network configuration service from scratch may be necessary, but that would indicate it's a bug in that service.

Comments

0

On centos 7

  1. check ip address using command ifconfig. you will get information like this

    ens33: flags=****<UP,BROADCAST,RUNNING,MULTICAST> mtu **** inet ***.***.***.*** netmask ***.***.***.0 broadcast ***.***.***.*** 
  2. add inet ip address and hostname in file /etc/hosts

    a. open file vi /etc/hosts

    b. add ip and host like ip_address hostname hostname

  3. reboot

It will attach ip and host.

Comments

0

I was having the same issue, tried all the methods nothing worked.

then realized my VPN was on.

if you too have a VPN turned on try switching off your VPN and retry.

I was using Cloudflare VPN.

Comments

0

I had the same output and turned out I had contradicting insteadof declarations in the .gitconfig (because I was working simultaneously on node and golang projects). You can manually delete the sections from the .gitconfig. Though I've created a script that cleans the url sections to be able to add the insteadof declarations on a cleaner config:

for windows (should be saved as .bat):

@echo off setlocal for /f "usebackq tokens=* delims=" %%# in (`git config --get user.name`) do ( set git_user=%%# ) echo %git_user% for /f "usebackq tokens=1,2 delims=] " %%a in (`findstr "[url " "%userprofile%\.gitconfig" ^|find /V "%git_user%:" 2^>nul`) do ( git config --global --remove-section url.%%b ) endlocal rem -- git config --global url.ssh://[email protected]/.insteadOf https://github.com/ 

bash:

#!/bin/bash git_user=$(git config --get user.name) git config --global -l | grep -v $git_user | grep url.| awk -F '.insteadof' '{print $1}' | while read -r url ; do echo $url git config --global --remove-section $url done 

And it will be a good idea .gitconfig to be backed up.

Comments

0

Steps to troubleshoot here

This happen with me on SourceTree In my case, something wrong with my pair public-private key. So I delete this pair(usually store on /Users/username/.ssh) and generate new one(also add SSH on github Settings-> SSH and GPG keys manually if needed)

Comments

0

For me this resolved the issue: sudo systemctl restart networking

Comments

-1

enter image description here

I've the same issue of recent to solve this problem all you just need to do is to connect to stable internet once you're connected to stable internet try again

2 Comments

Please don't provide screenshots and replace it with text only.
This does not really answer the question. If you have a different question, you can ask it by clicking Ask Question. To get notified when this question gets new answers, you can follow this question. Once you have enough reputation, you can also add a bounty to draw more attention to this question. - From Review
-1

restarting my terminal did not work, so i restarted my laptop ,and it works.

Comments

-5

If ping github.com gives below error: ping: cannot resolve github.com: Unknown host

Kindly wait for couple of minutes and then try again.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.