问题
I have a following problem:
$ 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.
I have already checked the connection doing this:
$ ssh -vT git@github.com
and output looks good, I was correctly authenticated.
While checking further, I noticed that:
$ ssh-add -l
The agent has no identities.
I have tried to run ssh-agent, but nothing changed:
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-A1mhFqvqncuO/agent.766; export SSH_AUTH_SOCK;
SSH_AGENT_PID=767; export SSH_AGENT_PID;
echo Agent pid 767;
$ ssh-add -l
Could not open a connection to your authentication agent.
I am using Arch Linux. Any help would be strong appreciated! Thanks in advance!
Github diagnostic help here.
回答1:
I had the similar problem and my problem was solved by running the following command to add my key to the list of known keys:
ssh-add ~/.ssh/id_rsa
Hope it solves yours too. ;)
回答2:
You need to do in your console (if you use an a putty ssh client):
Generate the keys, if keys not exist:
cd ~/.ssh && ssh-keygen -lf ~/.ssh/id_rsa.pub
Don't forget password, entered at this step!
Output your public key to screen:
cd ~/.ssh && cat id_rsa.pub
Copy this string by click and move a mouse pointer from begin output to end. No need to press Ctrl + V or any more keys.
Log in your account on GitHub and add this public key to https://github.com/settings/ssh
Now you can use your git locally.
回答3:
If you haven't already read it, you should look through the GitHub help page for this error:
Error: Permission denied (publickey)
Every time that I've had this problem, it was due to the last issue listed on that page: I didn't have the public key from my current workstation attached to my GitHub account. Of course, GitHub also provides instructions on how to attach your public key to your account.
tl;dr
Make sure your current public key is attached to your GitHub account.
回答4:
I don't think this will solve your problem since you tested ssh -vT git@github.com
directly and it worked, but you are using the ssh-agent
improperly. You need to run
$ eval `ssh-agent -s`
Agent pid 767
$ ssh-add -l
The agent has no identities.
This will evaluate the environment export commands and allow your ssh-add
and ssh
commands to communicate with the agent. Alternatively, you can ask the agent to start a shell, terminal, etc. and it will set up the proper environment:
$ ssh-agent bash
$ ssh-add -l
The agent has no identities.
In this case, the shell is running as a child of the ssh-agent
and the agent will shut down when the shell quits.
回答5:
I faced the same issue on my Ubuntu and then I realize that I am on sudo
mode, once I just access remote
without sudo
it went well.
That's how I get rid if the issue, hope it may help.
回答6:
Permission denied (public key). I encountered this problem today, but I found a solution finally, and successfully solved my problem.
Maybe you should verify following issues:
- you have a github account
- git config your username and -mail
- generate a ssh-key pri/pub pair and add the public key to your git account, please check this may give you help: generating new ssh key and cannot push git repository 'permission denied'
- check that ssh-key is successfully added:
ssh -V username@github.com
- good luck!
回答7:
In my case I had this problem with GitLab because I was working with non-default SSH key pair paths. @NEO 's answer works perfectly:
ssh-add ~/.ssh/other_id_rsa
However, I had to do this everytime that I opened a new terminal.
To make this change permanent, you have to edit ~/.ssh/config
and add the following:
Host gitlab.company.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/private-key-filename
For more detailed info check gitlab's documentation.
来源:https://stackoverflow.com/questions/13674647/cannot-push-to-git-repository-permission-denied