GitHub Error Message - Permission denied (publickey)

GitGithub

Git Problem Overview


Anybody seen this error and know what to do?

I'm using the terminal, I'm in the root, the GitHub repository exists and I don't know what to do now.

> git push -u origin master
Permission denied (publickey).
fatal: Could not read from remote repository.

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

Git Solutions


Solution 1 - Git

GitHub isn't able to authenticate you. So, either you aren't setup with an SSH key, because you haven't set one up on your machine, or your key isn't associated with your GitHub account.

You can also use the HTTPS URL instead of the SSH/git URL to avoid having to deal with SSH keys. This is GitHub's recommended method.

Further, GitHub has a help page specifically for that error message, and explains in more detail everything you could check.

Solution 2 - Git

I know about this problem. After add ssh key, add you ssh key to ssh agent too (from official docs)

ssh-agent -s
ssh-add ~/.ssh/id_rsa

After it all work fine, git can view proper key, before couldn't.

Solution 3 - Git

Did you create a config file in your ~/.ssh directory? It should have contents like these:

Host github.com 
 IdentityFile ~/.ssh/github_rsa

Assuming that you created an ssh key named github_rsa

and uploaded it to GitHub...

NOTE: You must follow this way of explicit configuration if you have more than 1 key (2 and more) in your ~/.ssh/ directory. If you don't specify key this way, then first key in order is taken and used for github authentication, so it depends on the key file name then.

Solution 4 - Git

You need to generate an SSH key (if you don't have one) and associate the public key with your Github account. See Github's own documentation.

Solution 5 - Git

This happened to me. For some reason my origin got messed up without my realizing it:

Check if your settings are still correct

git remote -v

the url needs to be something like ssh://[email protected]/YourDirectory/YourProject.git; if you don't see [email protected], use

git remote set-url origin git://github.com/YourDirectory/YourProject.git

to set it right. Or you could use the github app to check and set the Primary Remote Repository url in the settings panel of your particular repository.

Solution 6 - Git

Issue solved if you change the ssh access to https access to the remote repository:

git remote set-url origin https_link_to_repository

git push -u origin master

Solution 7 - Git

Assuming you are connecting GitHub over SSH, you can run below command to confirm this.

$git config --get remote.origin.url

If you get a result has following format [email protected]:xxx/xxx.github.com.git, then you should do the following.

Generate a SSH key(or use existing one). if you had one, you just need to add your key to the ssh-agent (step 2)and to your GitHub account(step 3).

below are for those who don't have SSH key.

Step 1 Generating public/private rsa key pair.

$ssh-keygen -t rsa -b 4096 -C "[email protected]"

You'll be asked to confirm where to save the SSH key and what passphrase you want to use.

Step 2 Add your key to the ssh-agent

  • Ensure ssh-agent is enabled

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

  • Add your SSH key to the ssh-agent:

    $ssh-add ~/.ssh/id_rsa

Step 3 Add your SSH key to your account

$sudo apt-get install xclip

$xclip -sel clip < ~/.ssh/id_rsa.pub

Then add the copied key to GitHub

Go to Settings->SSH keys(Personal settings side bar)->Add SSH key->fill out form(key is on your clipboard, just use ctrl+v)->Add key

After going through above steps, you should solve the permission problem.

Reference Link: [Generating SSH keys][1].

[1]: https://help.github.com/articles/generating-ssh-keys/ "more details"

Solution 8 - Git

Another solution :

create the SSH keys, type ssh-keygen -t rsa -C "[email protected]". This will create both id_rsa and id_rsa.pub files.

Add the id_rsa to ssh list on local computer: ssh-add ~/.ssh/id_rsa.

After generating the keys get the pubkey using :

cat ~/.ssh/id_rsa.pub 

you will get something like :

cat ~/.ssh/id_rsa.pub 

ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAACAQCvMzmFEUPvaA1AFEBH6zGIF3N6pVE2SJv9V1MHgEwk4C7xovdk7Lr4LDoqEcqxgeJftwWQWWVrWWf7q9qCdHTAanH2Q5vx5nZjLB+B7saksehVOPWDR/MOSpVcr5bwIjf8dc8u5S8h24uBlguGkX+4lFJ+zwhiuwJlhykMvs5py1gD2hy+hvOs1Y17JPWhVVesGV3tlmtbfVolEiv9KShgkk3Hq56fyl+QmPzX1jya4TIC3k55FTzwRWBd+IpblbrGlrIBS6hvpHQpgUs47nSHLEHTn0Xmn6Q== user@email.com

copy this key (value) and go to github.com and under the setting (ssh and pgp key) add your public key.

Solution 9 - Git

First, we need to check for existing ssh keys on your computer. Open up Terminal and run:

ls -al ~/.ssh

#or

cd ~/.ssh
ls

and that will lists the files in your .ssh directory

And finally depending on what you see (in my case was):

 github_rsa	 github_rsa.pub	known_hosts

Just try setting up your RSA and hopefully that will solve your "git push origin" issues

$ ssh-keygen -lf ~/.ssh/github_rsa.pub

NOTE: RSA certificates are keys-paired so you will have a private and a public certificate, private will not be accessible for you since it belongs to github (in this case) but the public is the one you might be missing when this error happens (at least that was my case, my github account or repo got messed up somehow and i had to "link" the public key, previously generated)

Solution 10 - Git

this worked for me:

1- remove all origins

git remote rm origin  

(cf. https://www.kernel.org/pub/software/scm/git/docs/git-remote.html)

*remote : "Manage the set of repositories ("remotes") whose branches you track.

*rm : "Remove the remote named . All remote-tracking branches and configuration settings for the remote are removed."

2- check all has been removed :

git remote -v  

3- add new origin master

git remote add origin git@github.com:YOUR-GIT/YOUR-REPO.git
 

that's all folks!

Solution 11 - Git

I was getting this error. Turns out I had just upgraded OSX to Sierra and my old key was no longer registered.

At first I thought it was "Upgrading to macOS Sierra will break your SSH keys and lock you out of your own servers"

But I had sidestepped that one. Turns out I just had to re-register my existing key:

ssh-add -K

And type the passphrase... done!

Solution 12 - Git

In case you are not accessing your own repository, or cloning inside a cloned repository (using some "git submodule... " commands):

In the home directory of your repository:

$ ls -a

1. Open ".gitmodules", and you will find something like this:

[submodule "XXX"]
    path = XXX
    url = [email protected]:YYY/XXX.git

Change the last line to be the HTTPS of the repository you need to pull:

[submodule "XXX"]
    path = XXX
    https://github.com/YYY/XXX.git

Save ".gitmodules", and run the command for submodules, and ".git" will be updated.

2. Open ".git", go to "config" file, and you will find something like this:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com/YYY/XXX.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[submodule "XXX"]
    url = [email protected]:YYY/XXX.git

Change the last line to be the HTTPS of the repository you need to pull:

    url = https://github.com/YYY/XXX.git

So, in this case, the main problem is simply with the url. HTTPS of any repository can be found now on top of the repository page.

Solution 13 - Git

Make sure ssh-add -l shows a fingerprint of an SSH key that's present in the list of SSH keys in your Github account.

If the output is empty, but you know you have a private SSH key that works with your github account, run ssh-add on this key (found in ~/.ssh. It's named id_rsa by default, so you'll likely run ssh-add id_rsa).

Else, follow these instructions to generate an SSH key pair .

Solution 14 - Git

I think i have the best answer for you, your git apps read your id_rsa.pub in root user directory

/home/root/.ssh/id_rsa.pub

That's why your key in /home/your_username/.ssh/id_rsa.pub can't be read by git. So you need to create the key in /home/root/.ssh/

$ sudo su
$ ssh-keygen
$ cd ~/.ssh
$ cat id_rsa.pub

Then copy the key in your github account. It's worked for me. You can try it.

Solution 15 - Git

I was using github earlier for one of my php project. While using github, I was using ssh instead of https. I had my machine set up like that and every time I used to commit and push the code, it would ask me my rsa key password.

After some days, I stopped working on the php project and forgot my rsa password. Recently, I started working on a java project and moved to bitbucket. Since, I had forgotten the password and there is no way to recover it I guess, I decided to use the https(recommended) protocol for the new project and got the same error asked in the question.

How I solved it?

  1. Ran this command to tell my git to use https instead of ssh:

     git config --global url."https://".insteadOf git://
    
  2. Remove any remote if any

     git remote rm origin
    
  3. Redo everything from git init to git push and it works!

PS: I also un-installed ssh from my machine during the debug process thinking that, removing it will fix the problem. Yes I know!! :)

Solution 16 - Git

Yes I too had this question :/ I was going to push my project to Github in HTTP type(not in SSH type). I had to enter my username and password in each push. So first I entered code relevant to below type

git remote add origin git@github.com:YOUR-GIT/YOUR-REPO.git

and I got >[email protected]: Permission denied (publickey). fatal: Could not read from remote repository.

So however I solved my problems by doing below methods

  1. git remote rm origin remove your git remote repository

  2. git remote now check whether your remote remote repository have been removed >URL = https://github.com/<username>/<repository>.git

  3. git remote add origin URL Again add your URL to make remote repository

  4. git push -u origin master
    You can push your content to remote repository. In here as you use "-u" with the command you make a tracking branch and with the help of tracking branch in the remote repository you won't to tell git what branch you push in the next steps :)
    And here if you use linux git will ask username and password before push the content. And give your relevant credentials. >For prevent to give username and password in each push you have to change git config

>For list your git config - git config --global --list
you will see

user.name=<your_username>
user.email=<your_email>

So you have to add credential.helper attribute to your git config to this

5.git config --global --add credential.helper store add this to your terminal Now you can add new item to your files then git add., git commit -m "<message>", git push
And now too there git will request your username and password and that will be the last time. And for next git pushes git won't request username and password from you :)

Solution 17 - Git

OK there are few solutions to this one, some of them might already been mentioned but just to keep them together:

  • make sure you keys are present, by default another ~/.ssh/ folder, i.e. id.rsa and id.rsa.pub

  • make sure the keys have correct permissions, you can run chmod:

    chmod 600 ~/.ssh/id_rsa

    chmod 644 ~/.ssh/id_rsa.pub

  • make sure the content of you public key (id_rsa.pub) matches the one uploaded in the remote repository configuration

  • Finally fix the problems with ssh agent: ssh-add

Some more info: https://itcodehub.blogspot.com/2015/01/ssh-add-problems-with-ssh-agent-and.html

Solution 18 - Git

Allow write access for the key (identity) and then click Add key

enter image description here

If on Windows check for more details in Using Github via SSH.

Solution 19 - Git

If you have already created an SSH key and are still getting the error it is because you need to give the user permissions to read and write to the folder you are cloning into. To do this, sudo chmod 777 <your_folder_name_here>". Of course, this is after you have generated an SSH key and you are still getting this error. Hope this helps future users.

Edit

To add on to this use admin in Windows if you're using the git bash

Solution 20 - Git

I would like to add some of my findings:

If you are using GitBash, then make sure the SSH key is stored in ~/.ssh/id_rsa.

By Default GitBash searches for ~/.ssh/id_rsaas default path for SSH key.

Even the file name id_rsa matters. If you save your SSH key in another filename or path, it will throw the Permission Denied(publickey)error.

Solution 21 - Git

I had the same issue recently. This might help if you need a fix immediately, but this needs to be done every time you re-start your system

From terminal, run : ssh-add ~/.ssh/id_rsa

Enter your system password and that should work.

Solution 22 - Git

Solutin for error like this

> [email protected]: Permission denied (public key). fatal: Could not read > from remote repository. Please make sure you have the correct access > rights

Solution (OSX)

  • Open your terminal and follow below commands

  • $ cd ~

  • $ sudo su

  • $ ssh-keygen

    • Enter file in which to save the key (/var/root/.ssh/id_rsa): $ id_rsa
    • Enter passphrase (empty for no passphrase): $ hit enter
    • Enter same passphrase again: $ hit enter
  • $ cd ~/.ssh

  • $ cat id_rsa.pub

  • copy display content. enter image description here

  • Open GitHub click your profile icon settings>SSH and GPC Keys

  • Click on the new ssh key button enter image description here

  • enter any title and key that you copied enter image description here

  • check now your issue is resolved

Solution 23 - Git

TLDR:

  1. make sure you have write access to the repo (configure it from the repo's settings).
  2. make sure the public key is in the SSH and GPG keys of your github account.

For me, this error usually occurs when I try to clone some repo from a newly installed machine. When receiving a request, github will first check the public key hash. If the public key does not match any user, github will reject this request. This case is common if the machine is new and your ssh key is newly generated.

Solution 24 - Git

you can use Https url to login

i guess you are trying to login with ssh url when you say git push if it as asking only password consider you are connecting through ssh.better you use http url.

Solution 25 - Git

Also in ubuntu, even though there was already SSH key entered in settings in BitBucket, I got this problem. The reason was, I was trying the following:

sudo git push origin master

Not sure why, but it got solved by using

git push origin master

No sudo used.

Solution 26 - Git

For me I tried this -

eval "$(ssh-agent -s)"

then I run

ssh-add ~/.ssh/path-to-the-keyfile

and for generating the key you can run

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

this will generate the pair of keys (Public and private).

you can store this key to github for more read this Adding a new SSH key to your GitHub account

I hope it will help others :)

Solution 27 - Git

I was having a similar problem to @Batman. However, because I was running this under /usr/local/src/projectname, running without sudo was not an option.

Just add the -E flag to preseve the environment (your ~/.ssh/ path).

$ sudo -E git clone git@your_repo

From man sudo:

> -E, --preserve-env > Indicates to the security policy that the user wishes to pre‐ > serve their existing environment variables. The security > policy may return an error if the user does not have permis‐ > sion to preserve the environment.

Solution 28 - Git

I found this page while searching for a solution to a similar error message using git pull on a remote host:

$ git pull
Permission denied (publickey).
fatal: Could not read from remote repository.

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

I was connected from my local machine to the remote host via ssh -AY remote_hostname. This is not a solution to OP's question, but useful for others who come across this page, so posting it here.

Note that in my case, git pull works fine on my local machine (that is, ssh key had been set up, and added to the GitHub account, etc). I solved my issue by adding this to ~/.ssh/config on my laptop:

Host *
     ForwardAgent yes

I then re-connected to the remote host with ssh -AY remote_hostname, and git pull now worked. The change in the config enables to forward my ssh keypair from my local machine to any host. The -A option to ssh actually forwards it in that ssh session. See more details here.

Solution 29 - Git

enter image description hereIf you are using Widows-10, follow this instruction. It works for me.

  1. Open terminal as administrator

  2. run this command: "ssh-keygen". It generate a ssh key and will show the folder where it has been created. Check my imageenter image description here

  3. copy the generated "ssh key"

  4. go to your github profile ---> settings --> Click SSH and GPH --> Click ""New SSH Key Button" and paste the "ssh key" and finally "clickthe add Button"

Solution 30 - Git

If you are using the GitHub for Mac UI, check preferences to make sure you're logged in.

Solution 31 - Git

I was getting same error during 'git push'. In client side I had two origin and master. I removed one, then it worked fine.

Solution 32 - Git

Once scenario where this will happen is when you follow GitHub instructions after you create your repository. Git will instruct you to add your remote with something like this.

git remote add origin [email protected]:<user>/<project>.git

Replace what's in <> with values related to your account.

The solution is to remove the .git suffix. Add the remote as follows:

git remote add origin [email protected]:<user>/<project>

Solution 33 - Git

tl;dr

in ~/.ssh/config put

PubkeyAcceptedKeyTypes=+ssh-dss

Scenario If you are using a version of openSSH > 7, like say on a touchbar MacBook Pro it is ssh -V OpenSSH_7.4p1, LibreSSL 2.5.0

You also had an older Mac which originally had your key you put onto Github, it's possible that is using an id_dsa key. OpenSSH v7 doesn't put in by default the use of these DSA keys (which include this ssh-dss) , but you can still add it back by putting the following code into your ~/.ssh/config

PubkeyAcceptedKeyTypes=+ssh-dss

Source that worked for me is this Gentoo newsletter

Now you can at least use GitHub and then fix your keys to RSA.

Solution 34 - Git

This Worked for me

There are 2 options in github - HTTPS/SSH

I had selected SSH by mistake due to which the error was occuring -_-

Switch it to HTTPS and then copy the url again and try :)

Solution 35 - Git

Maybe your ssh-agent is not enable You can try it

  1. Download git

http://git-scm.com/

  1. Install it

  2. Enable ssh-agent

C:\Program Files\Git\cmd

start-ssh-agent

Solution 36 - Git

Go to your GitHub account dashboard, find your project repository, click Settings tab - under Deploy keys you'll have to add your SSH key. Open Terminal and type:

cat ~/.ssh/id_rsa.pub | pbcopy 

This will copy the key from your id_rsa.pub file. So just go back to GitHub dashboard, paste it, click Add Key and that's it.

The same solution applies to Bitbucket accounts.

Solution 37 - Git

I had 2 Github identity files loaded in the ssh agent. My personal key and another for a client project.

I removed the key that was causing confusion:

ssh-add -d id_rsa_github_somekey

Solution 38 - Git

Use the URL for this page when adding GitHub as a remote. it wont cause any such error and push the code

Solution 39 - Git

Using Https is fine, run git config --global credential.helper wincred to create a Github credential helper that stores your credentials for you. If this doesn't work, then you need to edit your config file in your .git directory and update the origin to the https url.

See this link for the github docs.

Solution 40 - Git

I had the same issue with AWS CodeCommit. All was working on one laptop but it wasn't on the other. The solution was to remove 'PreferredAuthentications publickey' line from .ssh/config in the section with the AWS config.

Solution 41 - Git

I had the same issue but none of the answers worked but a simple solution worked. But please note that I did add the ssh key as suggested by the answers first. Not sure if that really helped. Anyway this is what finally worked:

Change your remote's URL from HTTPS to SSH with the git remote set-url command. $ git remote set-url origin [email protected]:USERNAME/REPOSITORY.git. Verify that the remote URL has changed.

Solution 42 - Git

I tried to fix similiar problem with hours. In the end I deleted all keys and made new keys without passphrases and finally get rid of the problem.

The problem was with the SSH passphrase, which need to be removed!

Solution 43 - Git

you can try this way...

enter image description here

enter image description here

choose another links

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionwebwrksView Question on Stackoverflow
Solution 1 - GitbdukesView Answer on Stackoverflow
Solution 2 - GitVelikiiNehochuhaView Answer on Stackoverflow
Solution 3 - GitIgorGanapolskyView Answer on Stackoverflow
Solution 4 - GitcdhowieView Answer on Stackoverflow
Solution 5 - GitrmundoView Answer on Stackoverflow
Solution 6 - Gitgeorge manoView Answer on Stackoverflow
Solution 7 - GitxinerdView Answer on Stackoverflow
Solution 8 - GitBadr BellajView Answer on Stackoverflow
Solution 9 - Gitd1jhoni1bView Answer on Stackoverflow
Solution 10 - GitmarcdahanView Answer on Stackoverflow
Solution 11 - GitjfunkView Answer on Stackoverflow
Solution 12 - GitN. OsilView Answer on Stackoverflow
Solution 13 - GitRose PerroneView Answer on Stackoverflow
Solution 14 - GitromanView Answer on Stackoverflow
Solution 15 - Git3AKView Answer on Stackoverflow
Solution 16 - GitDamikaView Answer on Stackoverflow
Solution 17 - GitxprophView Answer on Stackoverflow
Solution 18 - GitprostiView Answer on Stackoverflow
Solution 19 - GitKevinView Answer on Stackoverflow
Solution 20 - Gitimflash217View Answer on Stackoverflow
Solution 21 - Gituser7506706View Answer on Stackoverflow
Solution 22 - GitAbhishek TomarView Answer on Stackoverflow
Solution 23 - GitHan ZhangView Answer on Stackoverflow
Solution 24 - Gitvenkat razeshView Answer on Stackoverflow
Solution 25 - GitNabinView Answer on Stackoverflow
Solution 26 - GitJoomlerView Answer on Stackoverflow
Solution 27 - GitjustinView Answer on Stackoverflow
Solution 28 - GitTimur ShtatlandView Answer on Stackoverflow
Solution 29 - Gitcoding360View Answer on Stackoverflow
Solution 30 - GitjuliarmView Answer on Stackoverflow
Solution 31 - GitPabitra DashView Answer on Stackoverflow
Solution 32 - GitLitehouseView Answer on Stackoverflow
Solution 33 - GitpjammerView Answer on Stackoverflow
Solution 34 - GitAshutosh TiwariView Answer on Stackoverflow
Solution 35 - Git徐啟倫View Answer on Stackoverflow
Solution 36 - GitajlaracastView Answer on Stackoverflow
Solution 37 - GitAlex AguilarView Answer on Stackoverflow
Solution 38 - Gituser9283073View Answer on Stackoverflow
Solution 39 - GitRyan WalkerView Answer on Stackoverflow
Solution 40 - GitStrabekView Answer on Stackoverflow
Solution 41 - GitS.PereraView Answer on Stackoverflow
Solution 42 - GitSimbaView Answer on Stackoverflow
Solution 43 - GitsnowluliangView Answer on Stackoverflow