84

我正在尝试将文件推送到朋友的 git 存储库,但公钥出错。

git push origin testbranch
Permission denied (publickey).
fatal: Could not read from remote repository.

我们在哪里以及如何定义公钥/私钥?

git remote -v返回:

origin  git@github.com:Sesamzaad/NET.git (fetch)
origin  git@github.com:Sesamzaad/NET.git (push)

任何帮助表示赞赏。

4

21 回答 21

125

我遇到了同样的问题,这就是我所做的对我有用的事情。

使用 ssh 而不是 http。如果它的 http 删除源。

git remote rm origin

添加 ssh 网址

git remote add origin git@github.com:<username>/<repo>.git

在 .ssh/ 文件夹中生成 ssh 密钥。它将询问路径和密码,您只需按 Enter 键并继续。

cd ~/.ssh
ssh-keygen

复制密钥。您可以使用查看您的密钥。如果您没有指定不同的路径,那么这是默认路径。

cat ~/.ssh/id_rsa.pub

将此密钥添加到您的 github 帐户。接下来做

ssh -T git@github.com

您将在控制台中收到欢迎消息。

cd 进入你的项目文件夹。git push -u origin master现在工作!

于 2014-09-02T12:44:20.377 回答
52

我只需要处理这个问题。@user3445140 的回答帮助了我,但比我需要做的要多得多。

  1. 获取您的公共 SSH 密钥cat ~/.ssh/id_rsa.pub
  2. 复制密钥,包括“ssh-rsa”,但最后不包括您的计算机名
  3. 转到https://github.com/settings/ssh
  4. 添加您的 SSH 密钥
于 2014-09-04T13:37:01.637 回答
24

这对我有用。

首先,删除当前遥控器:

git remote rm origin

其次,通过 HTTPS 添加远程但 git@xxx :

git remote add origin https://github.com/Sesamzaad/NET.git

然后 push 对我有用:

git push origin master
于 2017-07-05T07:50:11.033 回答
17

我通过将密钥重新添加到我的 ssh-agent 来修复它。

使用以下命令:

ssh-add ~/.ssh/path_to_private_key_you_generated

由于某些原因,它消失了。

于 2018-05-02T17:15:40.037 回答
14

我正在运行 Ubuntu 16.04

使用删除远程源

git remote rm origin

使用设置 http url

git remote add origin https://github.com/<<Entire Path of the new Repo>>

git push origin master

上述步骤成功将代码添加到 repo。

于 2018-05-06T20:37:37.797 回答
6

以上解决方案都不适合我。对于上下文,我正在运行 ubuntu,并且我已经阅读了 ssh-key 设置文档。我的解决方法是ssh-add在终端中运行。这解决了这个问题。

资料来源:http ://baptiste-wicht.com/posts/2010/07/tip-how-to-solve-agent-admitted-failure-to-sign-using-the-key-error.html

于 2016-02-13T20:13:10.383 回答
5

这对我有用。迄今为止最简单的解决方案。

如果您使用 GitHub for Windows 并收到此错误,则问题可能是您尝试在错误的 shell 或模式下运行命令。如果您尝试git push origin master在常规命令提示符PowerShell中执行此操作,这就是问题所在。

您需要在git shell中执行此操作。只需打开 Github for Windows,右键单击,然后选择“在此处打开 Shell”。它看起来像一个常规的 PowerShell 窗口,但它不是,这让像我这样的新手对 git 感到非常困惑。

我希望其他人觉得这很有用。

于 2015-04-18T12:45:58.407 回答
3

来自 Github 的文档非常具有解释性。

https://help.github.com/en/articles/adding-a-new-ssh-key-to-your-github-account https://help.github.com/en/articles/generating-a-new -ssh-key-and-adding-it-to-the-ssh-agent

我认为您必须执行指南中的最后一步才能正确配置您的密钥

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/id_rsa
于 2019-05-25T15:58:50.230 回答
1

您可能必须将您的公钥添加到 github。https://help.github.com/articles/generating-ssh-keys

检查此线程:GitHub:权限被拒绝(公钥)。致命:远端意外挂断

于 2014-01-09T22:41:00.300 回答
1

在 Windows 上使用 Ubuntu Bash 时发生此错误。

我切换到标准的 Windows cmd 提示符,它没有错误。

这是一种解决方法,因为这意味着如果您想使用 ubuntu,您可能需要在 ubuntu 环境中加载 ssh 私钥。

于 2018-10-28T17:30:27.237 回答
1

为了清楚起见,有两种方法可以从您的 PC 连接到您的 git 存储库:

  1. 使用SSHwhich 具有以下格式: git@github.com:username/repository-name.git

  2. 使用HTTPSwhich 具有以下格式:https://github.com/username/repository-name.git

您有绝对的权利选择最适合您的。

如果您选择(1),那么您必须在您的 PC 和 git 帐户之间建立 SSH 连接(从上面的答案中找到步骤以了解如何操作)。

或者,您可以选择 (2) 并通过 HTTPS 连接,这不需要您在 PC 上建立 SSH,因此permission denied (public key)只要您的 git 帐户已经在 PC 上验证并连接,您就不会遇到问题。

于 2022-01-21T21:03:42.357 回答
1

如果您在 ~/.ssh 中有您的私钥并将它们添加到https://github.com/settings/ssh,但仍然无法提交通过 ssh 添加的 Github 存储库,请确保已添加它们到您的 ssh 代理:

ssh-add -k ~/.ssh/[PRIVATE_KEY]

您可以为多个服务器(例如 Bitbucket 和 GitHub)添加多个私钥,它会在处理 git 时使用正确的一个。

于 2020-01-20T15:20:30.573 回答
1

解决方案:您必须在您的 git-hub 配置文件中添加您的 ssh 密钥。按照步骤解决此问题

  1. 在git中右键你要推送的文件夹
  2. 此处选择 git-bash 问题
  3. 通过此命令编写命令 ssh-keygen 生成您的密钥
  4. 从 cmd 复制密钥或转到 (C:/User/your_user/.ssh/)
  5. 用记事本打开 id.rsa。
  6. 复制您的密钥
  7. 现在转到您的 git-hub 个人资料
  8. 前往设置
  9. 选择SSH 和 Gpg 密钥
  10. 选择新的 ssh 密钥选项
  11. 在标题中添加窗口键
  12. 将您的密钥粘贴到标题字段下方的描述部分
  13. 节省

现在您已准备好推送您的文件夹

  1. 现在转到您要上传的文件夹
  2. 右键单击文件夹
  3. 在这里选择 git bash
  4. 混帐初始化
  5. git 添加 README.md
  6. git commit -m "第一次提交"
  7. git 远程添加源https://github.com/ /
  8. git push -u 起源大师

希望这对你有帮助

于 2019-06-19T17:47:30.583 回答
0

如果您已经将公钥添加到 GITHUB 服务器,您可以尝试其他解决方案。

在我的情况下,GIT PUSH 从 RUBYMINE 内部失败,但从终端窗口执行此操作解决了问题。

有关更多解决方案,请访问此页面 https://github.com/gitlabhq/gitlabhq/issues/4730

于 2014-11-05T16:44:05.517 回答
0

我可以 ssh 连接 git@github.com,并返回成功窗口,但无法将任何内容推送到 github,服务器返回:

Permission denied (publickey).
fatal: Could not read from remote repository

我如何解决这个问题:

删除原点并重新添加:

git remote rm origin
git remote add origin git@github.com:<xxxx>/<xxxx>.git
git branch -M main
git push -u origin main

终端返回:

Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 16 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 321 bytes | 321.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:ShowTimeWalker/MyFirstTrailForGit.git
 * [new branch]      main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
于 2021-08-23T17:05:57.110 回答
0

我遇到了同样的问题。请您的朋友通过转到他的回购设置并添加新的合作者来将您添加为合作者。

您将收到一封邀请电子邮件,接受它。然后您就可以开始了。只要确保您添加了正确的遥控器。

于 2018-07-26T07:23:51.997 回答
0

为了部署到您朋友的存储库,您需要将您的公钥添加到存储库的部署密钥中。

转到存储库,转到部署密钥,然后将 id_rsa.pub(或您命名的任何名称)添加到“部署密钥”。

我相信将密钥添加到您自己的帐户只会让您写入您的帐户创建的存储库。如果它是由组织创建的,您需要将密钥添加到存储库的部署密钥中。

https://developer.github.com/v3/guides/managing-deploy-keys/

于 2017-10-17T23:08:32.117 回答
0

可能是,如果另一个答案无助于尝试运行git remote -v

如果你看到:

origin  https://github.com/<name/repo.git> (fetch)
origin  https://github.com/<name/repo.git> (push)

(来源以 https 或 http 开头)

git remote set-url origin git@github.com:<name/repo.git>

而不是git push再一次

于 2021-08-14T02:50:46.213 回答
0

如果您的 git 帐户中已生成 ssh 密钥,则只需执行以下操作 -

ssh-add -k ~/.ssh/id_rsa
于 2021-08-08T10:45:33.120 回答
0

您需要将项目 fork 到您自己的用户存储库。

然后add origin

git remote add upstream your-ssh-here
git fetch upstream
git branch --set-upstream-to=upstream/master master
于 2019-03-10T11:45:32.740 回答
-1

如果遇到 403 错误,解决方法是:

 The requested URL returned error: 403

由于您正在使用另一个帐户注册您的帐户,因此您需要从 Windows 中删除 github 凭据

control panel > user accounts > credential manager > Windows credentials > Generic credentials

then remove the Github keys
于 2020-04-27T07:50:15.333 回答