GitHub Error Message - Permission denied (publickey)
Asked Answered
A

54

1116

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.
Absently answered 17/10, 2012 at 18:11 Comment(10)
help.github.com/articles/generating-ssh-keysNaples
Similar question: #16075332Snobbery
Could be permission issues with .ssh and authoirzed keys. Ssh is pretty strict, google it.Socrates
Possible duplicate of Cannot push to git repository on bitbucketPachysandra
like @bdukes' answer here is the command using https and it will work, Windows example: "PS C:\xampp\htdocs> git clone github.com/algolia/instant-search-demo.git"Dobrinsky
rather than posting a detailed answer, I just want to point out that this CAN be caused by user permissions on your local computer. if you are logged in as root, you may try accessing git as your standard user, or vice versa. It can depend on which you used initially.Callery
Does this answer your question? How to solve Permission denied (publickey) error when using Git?Histo
jhooq.com/github-permission-denied-publickey There is a good and detail solution for this problem.Encaustic
I just use git push -u origin main on Dec 27, 2021, and that's ok. But when it comes to Nov 21 2022, that output just the question. Then I just use this to fix the problem. Via "git pull --rebase && git push -u origin main".Unwisdom
Update EST 08:34 01 December 2022, We should try to connect the remote Git repository via ssh again, e.g: ssh -T git@sofija_personal-github.com . OVER!Unwisdom
F
906

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.

To solve it:

  1. You should have a public key in your home directory, thus print the content of your public key, in Linux distro run for example cat ~/.ssh/id_rsa.pub (if the prior doesn't work, check the keys inside ~/.ssh/ with .pub extension)

  2. Add the content of such a public key to your Github account: click your profile photo -> Settings-> SSH and GPG keys -> New SSH key or Add SSH key

Frerichs answered 17/10, 2012 at 18:15 Comment(17)
This error is not exclusive to GitHub. I am getting the same error with BitBucket, and I'm scratching my head as to how to resolve it...Vogeley
The helping part is using ssh -vT [email protected] from the Github help page to help debug what key your repo is using. I suggest you add it in your answer.Celestinacelestine
I need to remember that on GitHub if you switch from HTTPS and SSH, it remembers this setting for all the repos! I tend to switch between the two, as I use TeamCity, which uses SSH and for my local repo I tend to just use HTTPS. I guess setting up SSH locally will prevent me from getting the same 'issue' in the future! Thanks @FrerichsChiffonier
The upvote of using HTTPS instead of SSL is a bit disappointing. SSH is far more convenient. The suggestion from @Celestinacelestine above solved the issue for me: GIT was not looking at the right place for the .ssh directory. Using ssh -vT [email protected] provides a lot of information as to why it is not working.Digitigrade
@Digitigrade thanks for the ssh -vT - it was looking in /var/root/.ssh/config, then I tried echo $USER and realized I was working as the root user (having previously done sudo -s).Cirrocumulus
per my comment above, a third option is that the command is being sent from an account other than the one with the ssh keys (e.g. running as root).Cirrocumulus
@PatrickRead how do you use https? Do you git remote set-url origin "https://...."? Can't find any information on that.Repulsion
@Repulsion Try this: help.github.com/articles/which-remote-url-should-i-use/… In general, use an HTTPS url, and use a credential helper to cache credentials locally if needed.Ganger
As @theapache64 mentioned: If you're on a Mac and have already generated an ssh key "ssh-add" may indeed be what you're missing. Worked for me.Altercation
Thanks @David This was my resolution. I was using sudo git clone... because I didn't set the owners correct of the WWW folder. Because of the sudo it would look in the root folder for the ssh file :). Doing a whoami and sudo whoami made it clear which user was called up on where. Changing the folder owner allowed me to not do the sudo git clone (which is silly anyway) and now it is cloning like a baby. ThanksConnotative
This pointed me to the Github Docs which really made it simple. Why did I think googling for an hour would be better than heading straight to the source? : ) Thanks.Nympholepsy
If following githubs troubleshooting guide leads to The agent has no identities., indeed ssh-add ~/.ssh/id_rsa is your most likely cure. Verifiable by another ssh-add -l -E md5. →Explanations hereIntelligentsia
use full url git clone https://github.com/Tatsh/kate-wakatime.git instead of git clone [email protected]:Tatsh/kate-wakatime.gitPaolo
Some people use https, so ssh isn't an option (plus it's a tedious setup). If you get this error message just set git remote set-url origin https://github.com/username/repository.gitStrohl
If you are trying to reploy a repo from a 3rd party site, you may need to edit your GitHub authorizations/App Settings: github.com/settings/installationsDebroahdebs
I followed this link docs.github.com/en/authentication/connecting-to-github-with-ssh/… but first checked if I had an ssh key generated first and then made sure it was added to my account using the linked help pages on the top of this guide. I then ran ssh -T [email protected] which told me I was successfully authenticated. I could then successfully push to my repo. Hope this helps someone! :)Gemology
I tried adding following the steps and got the error on github "Key is already in use". I wonder if its already added then why I am facing this error or Permission denied when I am trying to push code to my repoRedbreast
C
278

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

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

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

You should replace id_rsa with your key.

Example: ssh-add ~/.ssh/id_rsa => ssh-add ~/.ssh/id_ed25511.pub

Cidevant answered 12/6, 2015 at 14:51 Comment(18)
Prefect! Worked on my MacOS X.Breaking
Could not open a connection to your authentication agent.Doleful
try to run this: eval ssh-agent -sLochner
@MonaJalal use ssh-add ~/.ssh/github_rsaWilkinson
actually it worked well with me, but after restart my computer I found the same issue return with me, so do you want me to doing it with every time I need to deploy my project on the server ?!Bellow
You can use several options for autostart unix.stackexchange.com/questions/90853/…. Here described almost all cases. Usually all use keychain funtoo.org/Keychain for that.Cidevant
Indeed, after generating the keys, this is a step not to forgetEmit
@MonaJalal use eval ssh-agent -sCongressional
Worked on Mac OS CatalinaAlkahest
It works on MacOS Big Sur also. It's odd that my previous setup worked, but stopped working. And the commands fixed it.Windburn
indeed, if you already have an ssh-key set both in your github account & system, the problem might arise if the system doesn't recognize it anymore. so you can find the related ssh-key on your system using ls -al ~/.ssh & then hit ssh-add ~/.ssh/<your_custom_id_rsa>Ellita
No idea how to get this to work /Users/rleach/.ssh/id_rsa: No such file or directoryMuraida
somewhat related to the answer here but even more trivial for my solution...somehow my SSH config file was named as config.txt ...after I removed the extension, everything worked fine.Sassanid
This works even as you have multiple identities. For instance in ~/.ssh I would have 2 different accounts id_a and id_b. All that i need to do is to ssh-add ~/.ssh/id_a and ssh-add ~/.ssh/id_bMuntin
Thanks @VelikiiNehochuha, but I have to enter it everyday, is there any permanent solution for this?Castleman
needed eval `ssh-agent -s` firstSago
You have to run both these commands inside the project where you want to pull or push.Heterogenesis
This works on Mac Monterey!Avoid
V
161

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.

Vogeley answered 21/2, 2014 at 15:43 Comment(9)
I had generated the ssh-key and was able to work well, for quite some time, with no issues. One fine day (probably after restart), it stopped working, whereas the key was intact at github and on my local system. I added the "config file", specifying the key-mapped-to-domain. Details provided above in igor-ganapolsky-answer. It works fine !Encounter
This indeed solves my problem! Many thanks! But I have a question. Before using your method, ssh -T [email protected] responses correctly, while git push -u origin master gives the same error as in the question. Why I can connect to it correctly but cannot push to it or fetch from it?Carnal
@EdenHarder I am facing the same issue. Did you find an answer to it?Eames
EVERY tutorial and note I found on the topic assumed id_rsa and id_rsa.pub like it's the first and only SSH key. Thank you for this.Baram
It worked for me ! I had 2 set of keys on my system, and this solution resolved my issue. However it's better explained hereKeratoplasty
@LalitMohan It works for multiple keys. You have to make sure your config file is properly formatted and indented.Vogeley
It has resolved my case today, a config file to configure multiple repositories with multiple ssh keys depending on each ones.Enaenable
For gists I had to add a wildcard prefix: Host *.github.comNingpo
use this command to add this cd ~/.ssh/ nano config Host github.com IdentityFile ~/.ssh/github_rsa Save and exit the file by pressing Ctrl + X, then Y, and finally Enter.Helminth
R
72

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.

Richierichlad answered 17/10, 2012 at 18:13 Comment(4)
Thanks for this...I got an SSH key now generated from GitHub. What command is used to associate the two in the terminal now? Thanks!Absently
There is no terminal command for that. See step 4 in the documentation that I linked in my answer.Richierichlad
I cloned the repository by using HTTPS. Do I need to generate SSH key in this case?Richthofen
@PabitraDash No. HTTPS does not use SSH keys.Richierichlad
T
71

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.

Todd answered 23/5, 2013 at 3:30 Comment(2)
Be careful with the urls. They differ between https and ssh and the posts on this page don't make it that clear. Each git project has a .git/config file in the project root directory. There you can set the remote and branch information. Setting the remote for https: url = github.com/<yourGitUserName>/<yourGitProject>.git While for git+ssh: url = [email protected]:<yourGitUserName>/<yourGitProject>.git Having the wrong url causes the public-key permission denied error which is probably not a very clear error.Afterdinner
for my case in the final just works with in the part: git remote set-url origin github.com/your_directory/your_project.gitNapkin
S
46

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
Shuma answered 13/11, 2018 at 9:12 Comment(1)
i get "fatal: No such remote 'origin'" for thisKnow
R
36

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.

Reuven answered 3/1, 2016 at 14:34 Comment(2)
This solution worked on ubuntu, $ssh-add /root/.ssh/id_rsaCoronel
This resolved a weird messup on my enviornment too, one modification I would suggest is to avoid the xclip dependancy, just use cat ~/.ssh/id_rsa.pubPsychotechnics
D
32

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== [email protected]

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

Defame answered 21/8, 2017 at 10:9 Comment(0)
D
22

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)

Dumpish answered 1/8, 2013 at 23:23 Comment(5)
Do I have to copy the SHA output to github from this command?Vogeley
No, just execute "ssh-keygen -lf ~/.ssh/<YOUR_GITHUB_RSA_FILE.pub>"Dumpish
that's why i also attached a command that "Lists the files in your .ssh directory"... so that way you know from which file to extract your key (ssh-keygen). Remember 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, again)Dumpish
$ ssh-keygen -lf ~/.ssh/github_rsa.pub /home/mona/.ssh/github_rsa.pub: No such file or directoryDoleful
"No such file or directory" means you dont have that file name or path... what do you get when when execute ls -al ~/.ssh?Dumpish
A
22

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 [email protected]:YOUR-GIT/YOUR-REPO.git

that's all folks!

Appendage answered 20/12, 2017 at 7:22 Comment(1)
That was helpful.By these commands it start asking me for github username and account password, after that I can easily push to github link by type in terminal: git push -u origin masterC
A
17

If you having issues to make connection with your enterprise Github account then follow the below steps

Solution #1

ERROR: [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 #2

ERROR 2: remote: Password authentication is not available for Git operations.
remote: You must use a personal access token or SSH key.
remote: See https://github.compnay.com/settings/tokens or https://github.compnay.com/settings/ssh
fatal: unable to access 'https://github.company.com/repo/app.git/': The requested URL returned an error: 403

Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.

https://namespaceit.com/blog/remote-support-for-password-authentication-was-removed-on-august-13-2021-please-use-a-personal-access-token-instead

Annemarie answered 19/11, 2021 at 21:44 Comment(4)
It asks sudo password before pushing to remote. How do we remove that?Antecedence
@Antecedence - Not sure try with "allow write access" property in the GitHub repo.Annemarie
Solved my access denied problem and can use git without sudo. Thanks a lot!Incontinent
You should add ssh after register key into github. ssh-add ~/.ssh/sshfilesOtherworldly
D
16

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!

Doorbell answered 10/2, 2017 at 23:27 Comment(1)
same issue, worked for me: ` ssh-add -K ~/.ssh/id_rsa `Phenobarbitone
P
12

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.

Proletariat answered 1/12, 2015 at 11:16 Comment(1)
This let me to the answer I was looking for. I ran clone with sudo from habit, so it was looking for the wrong credentials. Took off the sudo and my clone ran fine.Leffler
S
12

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 [email protected]: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

  1. git remote add origin URL Again add your URL to make remote repository
  2. 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 :)

Speroni answered 29/5, 2021 at 14:3 Comment(0)
S
11

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 .

Stephanstephana answered 10/6, 2014 at 21:7 Comment(0)
A
10

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.

Akiko answered 26/1, 2016 at 15:19 Comment(0)
O
9

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!! :)

Orientation answered 1/1, 2016 at 6:23 Comment(1)
I don't think it's a good idea to point people toward https, when also ssh is supposed to work. Furthermore, this is unlikely to work for people behind a corporate proxy.Left
C
6

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

Costumier answered 26/3, 2019 at 20:16 Comment(1)
I had copied my ssh key from one computer to another using a USB drive formatted as FAT32. That changed the permissions of the files. On Ubuntu, I’m used to automatically being asked for the SSH password when needed, but that just silently did not happen until I ran chmod like you describe. Thanks.Jeromejeromy
K
5

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.

Kif answered 2/2, 2017 at 15:28 Comment(0)
S
5

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.

Stelly answered 25/6, 2020 at 18:49 Comment(1)
Where was this screenshot taken?Trici
S
4

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

Segment answered 8/9, 2016 at 19:52 Comment(3)
This. This can also cause the problem.Prosit
This was my problem, but I wouldn't recommend setting 777 permissions on a folder. In my case the folder was owned by the root user, and I needed to give it access to my non-root user account. I did this like so: sudo chown -R $USER:$USER <your_folder_name_here>Strohbehn
@David, I also recommend that as well. 777 is pretty hacky and not secure.Segment
A
4

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.

Ankara answered 24/12, 2016 at 10:10 Comment(0)
C
4

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.

Caloyer answered 5/1, 2022 at 3:16 Comment(4)
Can you be more specific on point 1?Trici
If the repo belongs to you, you will always be able to write to the repo. If the repo does not belong to you, ask the owner to add you to the collaborators.Caloyer
If you are trying to clone a public repo, it is highly likely that your SSH key is not added to your github account.Caloyer
My question was meant to ask where exactly in the repo’s settings write access is granted.Trici
P
3

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.

Pleistocene answered 24/2, 2017 at 1:28 Comment(1)
this was the case for me, using -E solved the issue.Fleshings
M
3

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"

Milt answered 15/12, 2021 at 11:1 Comment(1)
Awesome, I tried to find many solution, but this is straight forward and worked in one go.Bess
H
3

In case somebody else needs this. I created an ssh key with a different name like ar-2022-ssh in the user's .ssh folder. The problem with this is that Checking for existing SSH keys specifies that supported public keys for GitHub are one of the following.

id_rsa.pub
id_ecdsa.pub
id_ed25519.pub

Once I changed my ssh key name to one of those when generating a key, it worked connecting to GitHub

Hoxsie answered 13/6, 2022 at 12:35 Comment(1)
This was a life saver, thank you @KeniboiDowndraft
C
3

This could be caused by you SSH Key/ GPG needing to be update on you organization github or bitbucket site. Follow these steps to sole it:

  1. on cmd: type>> $ ssh-keygen -t rsa -C "[email protected]" (results in creationof id_rsa and id_rsa.pub)
  2. $ ssh-add ~/.ssh/id_rsa
  3. cat ~/.ssh/id_rsa.pub and copy the key and go to you org bitbucket/ github site and paste it on the ssh keys
Cordiality answered 7/11, 2022 at 10:15 Comment(0)
T
3

I faced the same problem.

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

You can track these steps if using the linux:

1. Check for existing SSH keys:

ls -al ~//.ssh/

2. Generate a new SSH key:

ssh-keygen -t ed25519 -C "<your_email_address>"

3. Add your SSH key to ssh agent:

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/id_ed25519

4. Add your public SSH key to your GitHub account:

cat < ~/.ssh/id_ed25519.pub

Now you are able to push again.

Tournedos answered 11/6, 2023 at 17:14 Comment(0)
P
2

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.

Proudhon answered 30/7, 2015 at 3:24 Comment(0)
U
2

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.

Utas answered 28/2, 2016 at 10:25 Comment(0)
H
2

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 "[email protected]"

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 :)

Hewitt answered 8/12, 2016 at 10:52 Comment(0)
P
2

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.

Piaffe answered 10/8, 2018 at 19:15 Comment(3)
whilst this is an acceptable solution, just a note that anything Host * is not desirable from a security point of view.Seineetmarne
@Seineetmarne Thank you for your comment! Could you please provide more details? Why is this not desirable? What do you recommend instead of Host *? TYIA!Piaffe
Do check this - the #Warning bit. Always best to specify the domain name to forward.Seineetmarne
M
2

I also got this problem since I use several GIT accounts and also different ones for work and university, this worked for me:

-> go to your ssh config

cd ~/.ssh/
vim config

-> copy the following block and fill in the host and user you want to push to/with

Host [Hostname]
User [User]
PubkeyAcceptedAlgorithms +ssh-rsa
HostkeyAlgorithms +ssh-rsa

I got this problem for a few hostnames so now i have several of those configurations in my ssh config file.

Mattson answered 13/6, 2022 at 7:12 Comment(0)
B
1

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

Bantu answered 17/2, 2015 at 6:19 Comment(0)
R
1

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

Richthofen answered 28/5, 2015 at 16:37 Comment(0)
I
1

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>

Invaginate answered 10/5, 2017 at 1:7 Comment(0)
L
1

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.

Laruelarum answered 2/11, 2017 at 9:48 Comment(0)
S
1

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 :)

Selfpossession answered 26/12, 2020 at 5:46 Comment(1)
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see github.blog/… for more information. Switching to HTTPS did not work for me anymore.Patio
M
1

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.

Mildamilde answered 8/4, 2021 at 16:26 Comment(0)
M
1

In ssh mode, github should recognize your machine. for any action (cloning) about github should recognize you. In the first step, you should Generate a new SSH key in your machine. use this link.

and use this to add it to github.

Magavern answered 16/4, 2023 at 2:4 Comment(0)
T
0

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

Tali answered 11/7, 2014 at 11:30 Comment(0)
D
0

you can try this way...

enter image description here

enter image description here

choose another links

Drin answered 3/11, 2016 at 13:40 Comment(1)
good point, this actually helped me, I was using SSH url with HTTPS config;Azaleah
M
0

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.

Methacrylate answered 7/2, 2017 at 16:21 Comment(0)
B
0

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

Berget answered 22/4, 2017 at 17:32 Comment(0)
S
0

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.

Subfusc answered 15/3, 2018 at 22:30 Comment(0)
B
0

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.

Bradeord answered 20/11, 2019 at 19:58 Comment(0)
B
0

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!

Buccinator answered 17/9, 2021 at 13:26 Comment(0)
L
0

Complete steps to setting SSH access to GitHub was already posted on ServerFault.

Check the answer from @Alex: https://serverfault.com/a/1088209/416091

At 24 Jul 2022 , I should set the server and port to ssh.github.com:443 in SSH user config file ( ~/.ssh/config).

Lisle answered 24/7, 2022 at 11:14 Comment(0)
V
0

This answer is a little different than the others, but there are other instances where you can have properly configured SSH keys on your system and still run into this.

I was encountering this issue when running git commands in a python subprocess inside an isolated environment (e.g. using Tox). I fixed it by passing through SSH_AUTH_SOCK and SSH_AGENT_PID env variables.

Vicarage answered 10/11, 2022 at 20:28 Comment(0)
B
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 and generate new one fix my problem

Bedrabble answered 11/11, 2022 at 8:10 Comment(0)
H
0

The way I was able to fix this issue for me was using the "Caching Your GitHub credentials in git

In the command line, enter { gh auth login }, then follow the prompts

you can refer to the documents with in GitHub

https://docs.github.com/en/get-started/getting-started-with-git/caching-your-github-credentials-in-git

Haematic answered 15/2, 2023 at 2:20 Comment(1)
While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From ReviewBulbous
E
0

For me who normally used github with git before, and suddenly got a warning like this.
(my jenkins pipeline cracked...) I provide some infos as below, hope it helps.
this is a must of course

Steps I've done

  1. I found a line in my gitconfig file(which is a key file,i used in another git repo server.AhemAhem...for some reason,I don't remember now)
    [core]
        sshCommand = ssh -i ~/.ssh/XXX_ed25519
    
  2. comment out that
  3. use ssh config file to do that
    Host gitrepo1
        HostName xxx.xxx.xxx
        User git
        Port xxx
        IdentityFile ~/.ssh/xxx-ssh-key
    Host github.com
        HostName github.com
        User git
        IdentityFile ~/.ssh/github_ed25519
    
  4. check your daily normal git task(or ssh -vT [email protected])

A lesson for multi git repo server config in git...

Endora answered 19/9, 2023 at 2:57 Comment(0)
D
-1

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

Doty answered 22/2, 2018 at 11:30 Comment(0)
P
-1

Just use the HTTP method URl in the command

Poleaxe answered 10/12, 2023 at 17:25 Comment(1)
DO you realize how insecure this is ?Genro

© 2022 - 2024 — McMap. All rights reserved.