51

我有以下问题:

$ 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。任何帮助将不胜感激!提前致谢!

Github 诊断帮助在这里。

4

9 回答 9

125

我遇到了类似的问题,我的问题通过运行以下命令将我的密钥添加到已知密钥列表中得到了解决:

ssh-add ~/.ssh/id_rsa

希望它也能解决你的问题。;)

于 2013-08-01T12:04:31.143 回答
6

您需要在控制台中执行以下操作(如果您使用 putty ssh 客户端):

  1. 如果密钥不存在,则生成密钥:

    cd ~/.ssh && ssh-keygen -lf ~/.ssh/id_rsa.pub
    

不要忘记密码,在这一步输入!

  1. 将您的公钥输出到屏幕:

    cd ~/.ssh && cat id_rsa.pub
    
  2. 通过单击复制此字符串并将鼠标指针从开始输出移动到结束。无需按Ctrl+V或任何其他键。

  3. 在 GitHub 上登录您的帐户并将此公钥添加到https://github.com/settings/ssh

  4. 现在你可以在本地使用你的 git。

于 2013-10-09T02:50:44.107 回答
6

如果您还没有阅读它,您应该查看 GitHub 帮助页面以了解此错误:

错误:权限被拒绝(公钥)

每次我遇到这个问题时,都是由于该页面上列出的最后一个问题:我没有将当前工作站的公钥附加到我的 GitHub 帐户。当然,GitHub 也提供了如何将你的公钥附加到你的帐户的说明


tl;博士

确保您当前的公钥已附加到您的 GitHub 帐户。

于 2012-12-02T22:37:16.403 回答
4

我认为这不会解决您的问题,因为您ssh -vT git@github.com直接测试并且它有效,但是您使用ssh-agent不当。你需要跑

$ eval `ssh-agent -s`
Agent pid 767
$ ssh-add -l
The agent has no identities.

这将评估环境导出命令并允许您的ssh-addssh命令与代理通信。或者,您可以要求代理启动 shell、终端等,它会设置适当的环境:

$ ssh-agent bash
$ ssh-add -l
The agent has no identities.

在这种情况下,shell 作为 的子运行,ssh-agent并且代理将在 shell 退出时关闭。

于 2013-06-14T20:35:04.050 回答
3

我在我的 Ubuntu 上遇到了同样的问题,然后我意识到我处于sudo模式,一旦我remote没有sudo它就可以顺利访问。

这就是我解决问题的方法,希望它可以帮助。

于 2013-09-19T12:39:12.823 回答
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 的文档

于 2018-04-26T08:50:54.180 回答
2

权限被拒绝(公钥)。我今天遇到了这个问题,但我终于找到了解决方案,并成功解决了我的问题。

也许你应该验证以下问题:</p>

  1. 你有一个github账号
  2. git 配置你的用户名和-mail
  3. 生成一个 ssh-key pri/pub 对并将公钥添加到您的 git 帐户,请检查这可能会给您帮助:生成新的 ssh 密钥并且无法推送 git 存储库“权限被拒绝”
  4. 检查 ssh-key 是否成功添加:ssh -V username@github.com
  5. 祝你好运!
于 2016-02-14T14:54:28.783 回答
0

我会尝试从(推送到 Git 返回错误代码 403 致命:HTTP 请求失败):

为了绝对能够使用 https 协议登录,您应该首先将您的身份验证凭据设置为 git 远程 URI:

git remote set-url origin https://yourusername@github.com/user/repo.git

然后在尝试 git push 时会要求您输入密码。

于 2020-08-31T12:27:40.500 回答
-1

致命:无法访问“https://......”:请求的 URL 返回错误:403 如果您在推送代码时看到此错误,您在 Windows 中遵循此地址

⇒ Control Panel\User Accounts\Credential Manager 并在 GitHub 中删除过去的帐户

于 2020-09-30T06:34:48.917 回答