我遇到以下问题:
$ 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.
我已经检查了这样做的连接:
$ ssh -vT git@github.com
并且输出看起来不错,我的身份验证正确。
在进一步检查时,我注意到:
$ ssh-add -l
The agent has no identities.
我试过运行ssh-agent,但没有改变:
$ 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.
我正在使用Arch Linux。任何帮助将非常感谢!提前谢谢!
答案 0 :(得分:117)
我遇到了类似的问题,通过运行以下命令将我的密钥添加到已知密钥列表中解决了我的问题:
ssh-add ~/.ssh/id_rsa
希望它也能解决你的问题。 ;)
答案 1 :(得分:6)
如果您尚未阅读,请查看GitHub帮助页面以了解此错误:
Error: Permission denied (publickey)
每次我遇到此问题时,都是由于该页面上列出的最后一个问题:我没有连接到我的GitHub帐户的当前工作站的公钥。当然,GitHub还提供how to attach your public key to your account的说明。
<强> TL;博士强>
确保您当前的公钥已附加到您的GitHub帐户。
答案 2 :(得分:6)
您需要在控制台中执行(如果您使用putty ssh客户端):
如果密钥不存在,则生成密钥:
cd ~/.ssh && ssh-keygen -lf ~/.ssh/id_rsa.pub
不要忘记在此步骤输入的密码!
将您的公钥输出到屏幕:
cd ~/.ssh && cat id_rsa.pub
通过单击复制此字符串,并将鼠标指针从开始输出移动到结束。无需按 Ctrl + V 或更多按键。
在GitHub上登录您的帐户并将此公钥添加到https://github.com/settings/ssh
现在你可以在本地使用你的git。
答案 3 :(得分:4)
我认为这不会解决您的问题,因为您直接测试ssh -vT git@github.com
并且它有效,但您使用ssh-agent
不正确。你需要运行
$ eval `ssh-agent -s`
Agent pid 767
$ ssh-add -l
The agent has no identities.
这将评估环境导出命令,并允许您的ssh-add
和ssh
命令与代理进行通信。或者,您可以要求代理启动shell,终端等,它将设置适当的环境:
$ ssh-agent bash
$ ssh-add -l
The agent has no identities.
在这种情况下,shell作为ssh-agent
的子代运行,代理将在shell退出时关闭。
答案 4 :(得分:3)
我在我的Ubuntu上遇到了同样的问题然后我意识到我处于sudo
模式,一旦我访问remote
而没有sudo
它就进展顺利。
这就是我如何摆脱这个问题,希望它可能有所帮助。
答案 5 :(得分:2)
权限被拒绝(公钥)。我今天遇到了这个问题,但我终于找到了解决方案,并成功解决了我的问题。
也许您应该验证以下问题:
ssh -V username@github.com
答案 6 :(得分:2)
在我的情况下,我遇到了GitLab的这个问题,因为我使用的是非默认的SSH密钥对路径。 @NEO的答案非常有效:
ssh-add ~/.ssh/other_id_rsa
但是,每次打开新终端时我都必须这样做。
要使此更改成为永久更改,您必须编辑~/.ssh/config
并添加以下内容:
Host gitlab.company.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/private-key-filename
有关详细信息,请查看gitlab's documentation。
答案 7 :(得分:0)
我会尝试从(Pushing to Git returning Error Code 403 fatal: HTTP request failed)进行尝试:
为确保绝对能够使用https协议登录,您应该首先将身份验证凭据设置为git Remote URI:
git remote set-url origin https://yourusername@github.com/user/repo.git
然后在尝试git push时会要求您输入密码。
答案 8 :(得分:-1)
致命:无法访问 'https:// ......':请求的 网址返回错误:403 如果您在推送代码时看到此错误 您在Windows中遵循此地址
⇒控制面板\用户帐户\凭据管理器 并删除GitHub中的过去帐户