How to solve Permission denied (publickey) error w

2018-12-31 18:27发布

问题:

I\'m on Mac Snow Leopard and I just installed git.

I just tried

git clone git@thechaw.com:cakebook.git

but that gives me this error:

Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

What am I missing?
I\'ve also tried doing ssh-keygen with no passphase but still same error.

回答1:

This info is working on theChaw but can be applied to all other git repositories which support SSH pubkey authentications. (See gitolite, gitlab or github for example.)

First start by setting up your own public/private key pair set. This can use either DSA or RSA, so basically any key you setup will work. On most systems you can use ssh-keygen.

  • First you\'ll want to cd into your .ssh directory. Open up the terminal and run:

    cd ~/.ssh && ssh-keygen

  • Next you need to copy this to your clipboard.
    • On OS X run: cat id_rsa.pub | pbcopy
    • On Linux run: cat id_rsa.pub | xclip
    • On Windows (via Cygwin/Git Bash) run: cat id_rsa.pub | clip
  • Add your key to your account via the website.
  • Finally setup your .gitconfig.
    • git config --global user.name \"bob\"
    • git config --global user.email bob@... (don\'t forget to restart your command line to make sure the config is reloaded)

Thats it you should be good to clone and checkout.

Further information can be found on https://help.github.com/articles/generating-ssh-keys (thanks to @Lee Whitney)



回答2:

More extensive troubleshooting and even automated fixing can be done with:

ssh -vT git@github.com

Source: https://help.github.com/articles/error-permission-denied-publickey/



回答3:

This error can happen when you are accessing the SSH URL (Read/Write) instead of Git Read-Only URL but you have no write access to that repo.

Sometimes you just want to clone your own repo, e.g. deploy to a server. In this case you actually only need READ-ONLY access. But since that\'s your own repo, GitHub may display SSH URL if that\'s your preference. In this situation, if your remote host\'s public key is not in your GitHub SSH Keys, your access will be denied, which is expected to happen.

An equivalent case is when you try cloning someone else\'s repo to which you have no write access with SSH URL.

In a word, if your intent is to clone-only a repo, use HTTPS URL (https://github.com/{user_name}/{project_name}.git) instead of SSH URL (git@github.com:{user_name}/{project_name}.git), which avoids (unnecessary) public key validation.


Update: GitHub is displaying HTTPS as the default protocol now and this move can probably reduce possible misuse of SSH URLs.



回答4:

The github help link helped me sort out this problem. Looks like the ssh key was not added to the ssh-agent. This is what i ended up doing.

Command 1:

Ensure ssh-agent is enabled. The command starts the ssh-agent in the background:

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

Command 2:

Add your SSH key to the ssh-agent:

ssh-add ~/.ssh/id_rsa


回答5:

Note that (at least for some projects) you must have a github account with an ssh key.

Look at the keys listed in your authentication agent (ssh-add -l)
(if you don\'t see any, add one of your existing keys with ssh-add /path/to/your/key (eg: ssh-add ~/.ssh/id_rsa))
(if you don\'t have any keys, first create one. See: http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html or just google ssh-keygen)

To verify that you have a key associated with your github account:

Go to: https://github.com/settings/ssh

You should see at least one key with a hash key matching one of the hashes you saw when you typed ssh-add -l just a minute ago.

If you don\'t, add one, then try again.



回答6:

This works for me:

ssh-add ~/.ssh/id_rsa


回答7:

I had a slight different situation, I was logged on to a remote server and was using git on the server, when I ran any git command I got the same message

   Permission denied (publickey).
   fatal: The remote end hung up unexpectedly

The way I fixed it was by changing the file /etc/ssh_config on my Mac. from

ForwardAgent no 

to

ForwardAgent yes


回答8:

Got same error report.

Fixed with using HTTP instead. Since I don\'t want set \"SSH keys\" for a test PC.

Change URL to HTTP when clone:

git clone https://github.com/USERNAME/REPOSITORY.git

My problem is a little bit different: I have URL set when adding a existing local repo to remote, by using:

git remote add origin ssh://github.com/USERNAME/REPOSITORY.git

To fix it, reset URL to HTTP:

git remote set-url origin https://github.com/USERNAME/REPOSITORY.git

BTW, you may check your URL using command:

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

Hope this will help some one like me. :D



回答9:

I met the same issue because of I was thought the difference between SSH and HTTPS is

https://github.com/USERNAME/REPOSITORY.git

ssh://github.com/USERNAME/REPOSITORY.git

So I changed from HTTPS to SSH just by changing https:// to ssh:// nothing on the end of the url was changed.

But the truth is:

https://github.com/USERNAME/REPOSITORY.git

git@github.com:USERNAME/REPOSITORY.git

Which means I changed ssh://github.com/USERNAME/REPOSITORY.git to git@github.com:USERNAME/REPOSITORY.git it works.

Stupid error but hope helps someone!



回答10:

I was struggling with same problem that\'s what i did and i was able clone the repo. I followed these procedure for iMac.

First Step : Checking if we already have the public SSH key.

  1. Open Terminal.
  2. Enter ls -al ~/.ssh to see if existing SSH keys are present:

Check the directory listing to see if you already have a public SSH key.Default public are one of the following d_dsa.pub,id_ecdsa.pub,id_ed25519.pub,id_rsa.pub

If you don\'t find then go to step 2 otherwise follow step 3

Step 2 : Generating public SSH key

  1. Open Terminal.
  2. Enter followong command with you valid email address that you use for github ssh-keygen -t rsa -b 4096 -C \"your_email@example.com\"
  3. You will see following in terminal Generating public/private rsa key pair. When it prompts to\"Enter a file in which to save the key,\" press Enter. This accepts the default file location. When it prompts to Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter] Just press enter again. At the prompt, type a secure passphrase.
  4. Enter passphrase (empty for no passphrase): [Type a passphrase] press enter if you don\'t want to Enter same passphrase again: [Type passphrase again] press enter again

This will generate id_rsa.pub

Step 3: Adding your SSH key to the ssh-agent

  1. Interminal type eval \"$(ssh-agent -s)\"
  2. Add your SSH key to the ssh-agent. If you are using an existing SSH key rather than generating a new SSH key, you\'ll need to replace id_rsa in the command with the name of your existing private key file. Enter this command $ ssh-add -K ~/.ssh/id_rsa

Now copy the SSH key and also add it to you github account

  1. In terminal enter this command with your ssh file name pbcopy < ~/.ssh/id_rsa.pub This will copy the file to your clipboard Now open you github account Go to Settings > SSH and GPG keys > New SSH key Enter title and paste the key from clipboard and save it. Voila you\'re done.


回答11:

On Windows, make sure all your apps agree on HOME. Msys will surprisingly NOT do it for you. I had to set an environment variable because ssh and git couldn\'t seem to agree on where my .ssh directory was.



回答12:

The basic GIT instructions did not make a reference to the SSH key stuff. Following some of the links above, I found a git help page that explains, step-by-step, exactly how to do this for various operating systems (the link will detect your OS and redirect, accordingly):

http://help.github.com/set-up-git-redirect/

It walks through everything needed for GITHub and also gives detailed explanations such as \"why add a passphrase when creating an RSA key.\" I figured I\'d post it, in case it helps someone else...



回答13:

Guys this is how it worked for me:

1- Open terminal and go to user [See attached image]

2- Open .ssh folder and make sure it doesn\'t have any file like id_rsa or id_rsa.pub otherwise sometimes it wont properly rewrite files

3 - git --version [Check for git installation and version]

4- git config --global user.email \"your email id\"

5- git config --global user.name \"your name\"

6- git config --list [make sure you have set your name & email]

7- cd ~/.ssh

8- ssh-keygen, it prompts for saving file, allow it

9- cat ~/.ssh/id_rsa.pub [Access your public key & copy the key to gerrit settings]

Note: You should not be using the sudo command with Git. If you have a very good reason you must use sudo, then ensure you are using it with every command (it\'s probably just better to use su to get a shell as root at that point). If you generate SSH keys without sudo and then try to use a command like sudo git push, you won\'t be using the same keys that you generated

\"enter

\"enter



回答14:

Are you in a corporate environment? Is it possible that your system variables have recently changed? Per this SO answer, ssh keys live at %HOMEDRIVE%%HOMEPATH%\\.ssh\\id_rsa.pub. So if %HOMEDRIVE% recently changed, git doesn\'t know where to look for your key, and thus all of the authentication stuff.

Try running ssh -vT git@github.com. Take note of where the identity file is located. For me, that was pointing not to my normal \\Users\\MyLogin but rather to a network drive, because of a change to environment variables pushed at the network level.

The solution? Since my new %HOMEDRIVE% has the same permissions as my local files, I just moved my .ssh folder there, and called it a day.



回答15:

One of the easiest way

go to terminal-

  git push <Git Remote path> --all


回答16:

In addition to Rufinus\' reply, the shortcut to copy your ssh key to the clipboard in Windows is:

  • type id_rsa.pub | clip

Refs:

  • Print to standard output
  • Copy command line output to clipboard


回答17:

I have just experienced this issue while setting my current project, and none of the above solution works. so i tried looking what\'s really happening on the debug list using the command ssh -vT git@github.com. I notice that my private key filename is not on the list. so renaming the private key filename to \'id_rsa\' do the job. hope this could help.



回答18:

If you have more than one key you may need to do ssh-add private-keyfile



回答19:

Its pretty straight forward. Type the below command

ssh-keygen -t rsa -b 4096 -C \"youremailid@yourdomain.com\"

Generate the SSH key. Open the file and copy the contents. Go to GitHub setting page , and click on SSH key . Click on Add new SSH key, and paste the contents here. That\'s it :) You shouldn\'t see the issue again.



回答20:

I was getting a similar Permission denied (publickey) error when trying to run a makefile.

As an alternative to the SSH steps above, you can Install the native GitHub for Mac application.

Click Download GitHub for Mac from - https://help.github.com/articles/set-up-git#platform-mac

Once you complete setup with your git hub account (I also installed the git hub command line tools but unsure if this step is required or not) then I received an email -

[GitHub] A new public key was added to your account

and my error was fixed.



回答21:

I was getting the same error. My problem was mixing in sudo.

I couldn\'t create the directory I was cloning into automatically without prefixing the git clone command with sudo. When I did that, however, my ssh keys where not being properly referenced.

To fix it, I set permissions via chmod on the parent directory I wanted to contain my clone so I could write to it. Then I ran git clone WITHOUT a sudo prefix. It then worked! I changed the permissions back after that. Done.



回答22:

I was getting this error because I generated the ssh keys with the wrong email. I was able to connect using ssh, but not using git. The solution was to regenerate the keys using the main email address of my github account.



回答23:

It worked for me.

Your public key is saved to the id_rsa.pub;file and is the key you upload to your account. You can save this key to the clipboard by running this:

pbcopy < ~/.ssh/id_rsa.pub

  • copy the SSH key to the clipboard, return to the web portal.
  • In the SSH Key field, paste your SSH key.
  • In the Name field, provide a name for the key.
  • save .


回答24:

It worked for me

ssh -i [your id_rsa path] -T github@github.com


回答25:

The easiest solution to this, when you are trying to push to a repository with a different username is:

 git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git


回答26:

This strange error, in my case was a symptom of gnome-keyring-daemon incorrectly naming the key to which it required a password.

I follow the steps outlined here, and entered the password via the terminal. The error, aka the confounding GUI interface, was resolved. See: https://askubuntu.com/questions/3045/how-to-disable-gnome-keyring



回答27:

In my case, I have reinstalled ubuntu and the user name is changed from previous. In this case the the generated ssh key also differs from the previous one.

The issue solved by just copy the current ssh public key, in the repository. The key will be available in your user\'s /home/.ssh/id_rsa.pub



回答28:

In my MAC I solved this with:

cp ~/.ssh/github_rsa ~/.ssh/id_rsa

For some reason my git stopped to find the private key in the github_rsa file. This happened in a specific repo. I mean that in other repositories git kept working normally.

I think it\'s a bug.

I could find this behavior running ssh -vT git@github.com



回答29:

I hit this error because I needed to give my present working directory permissions 700:

chmod -R 700 /home/ec2-user/


回答30:

Use the ssh link from Github but make sure to not append it with ssh just use what the ssh tab on git hub gives you to clone your repo.