git push:权限被拒绝(公钥)

Posted

技术标签:

【中文标题】git push:权限被拒绝(公钥)【英文标题】:git push: permission denied (public key) 【发布时间】:2013-11-08 18:10:02 【问题描述】:

我正在尝试将文件推送到朋友的 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)

感谢任何帮助。

【问题讨论】:

github: newbie problems -> Permission denied (publickey). fatal: The remote end hung up unexpectedly 的可能重复项 嗨@wyguf,如果有帮助,请接受我的回答。 :) 谢谢 \302\226git@github.com: Permission denied (publickey). Luan Si Ho 的解决方案对我有用。 ***.com/a/43672761/7061796 【参考方案1】:

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

查看这个帖子:GitHub: Permission denied (publickey). fatal: The remote end hung up unexpectedly

【讨论】:

【参考方案2】:

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

使用 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 现在可以使用了!

【讨论】:

我收到了欢迎信息,但 git push -u origin master 仍然不起作用 Steps git remote rmgit remote add 在我的情况下就足够了。 我在 Gid Bash "cat ~/.ssh/id_rsa.pub" 和 "ssh -T git@github.com" 上进行了尝试。我只得到“git@github.com:权限被拒绝(公钥)”。请帮忙。 @user2301515 这里有同样的问题。我更改为 https 然后推送,但是当它要求您输入密码时,请输入您的个人访问令牌(假设您有一个)。当时就推了。请参阅docs.github.com/en/get-started/getting-started-with-git/… 我仍然很想知道为什么我不能使用我的 ssh 密钥。【参考方案3】:

我只需要处理这个问题。 @user3445140 的回答帮助了我,但远远超出了我需要做的。

    使用cat ~/.ssh/id_rsa.pub 获取您的公共 SSH 密钥 复制密钥,包括“ssh-rsa”,但最后不包括您的计算机名称 转到https://github.com/settings/ssh 添加您的 SSH 密钥

【讨论】:

是的,这个可行,我需要将生成的 SSH 密钥从我的计算机添加到 GitHub,如评论中所述。 @user3445140 的回答不完整。 这是完美的答案 这绝对是最完美的答案!! 是的,非常完美。拯救我的一天 这个有效!【参考方案4】:

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

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

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

【讨论】:

【参考方案5】:

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

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

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

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

【讨论】:

谢谢。我要疯了,因为对我来说ssh -T git@github.com 工作但不是push origin master。那是因为我是在 cygwin64 窗口而不是 git bash 中做的...【参考方案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

【讨论】:

【参考方案7】:

这对我有用。

首先,移除当前遥控器:

git remote rm origin

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

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

然后推送对我有用:

git push origin master

【讨论】:

嘿,谢谢。这对我有用。我认为这一切都始于我们有一个人进来“帮助”我们创建 SSH 密钥 我使用文件凭据,而 git@ 试图使用公钥将事情搞砸了.. ty 回答【参考方案8】:

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

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

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

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

【讨论】:

【参考方案9】:

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

使用以下命令:

ssh-add ~/.ssh/path_to_private_key_you_generated

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

【讨论】:

ssh-add -k ~/.ssh/id_rsa 为我做的 我必须启动 ssh 代理,即使 Putty 在后台做:$ eval "$(ssh-agent -s)"【参考方案10】:

我正在运行 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。

【讨论】:

【参考方案11】:

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

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

【讨论】:

【参考方案12】:

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

我切换到标准的 windows cmd 提示符,并且没有错误。

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

【讨论】:

我最近搬到了 windows 并且在 vscode 和 git-bash 中使用 powershell 时遇到了这个问题。我将 url 直接从 github 复制到 windows-cmd 并神奇地工作,然后我将在 cmd 中工作的相同命令复制到 git-bash 并再次工作,没有任何解释。【参考方案13】:

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

然后add origin:

git remote add upstream your-ssh-here
git fetch upstream
git branch --set-upstream-to=upstream/master master

【讨论】:

【参考方案14】:

来自 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

【讨论】:

在你的步骤之后我必须执行以下操作才能让它工作:git remote set-url origin git@github.com:UserName/AppName.git【参考方案15】:

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

    在git中右键你要推送的文件夹 此处选择 git-bash 问题 通过此命令编写命令 ssh-keygen 生成您的密钥 从 cmd 复制密钥或转到 (C:/User/your_user/.ssh/) 用记事本打开 id.rsa。 复制您的密钥 现在转到您的 git-hub 个人资料 进入设置 选择 SSH 和 Gpg 密钥 选择新建 ssh 密钥选项 在标题中添加window-key 将您的密钥粘贴到标题字段下方的说明部分 保存

现在你可以推送你的文件夹了

    现在转到您要上传的文件夹 右键单击文件夹 在此处选择 git bash git 初始化 git add README.md git commit -m "第一次提交" git远程添加源https://github.com// git push -u origin master

希望对你有帮助

【讨论】:

【参考方案16】:

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

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

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

【讨论】:

【参考方案17】:

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

 The requested URL returned error: 403

由于您的帐户已注册到另一个帐户,因此您需要从 windows 中删除 github 凭据

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

then remove the Github keys

【讨论】:

我没有使用 Windows。 OP 也没有说明他在使用什么。【参考方案18】:

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

ssh-add -k ~/.ssh/id_rsa

【讨论】:

【参考方案19】:

可能是,如果其他答案无济于事,请尝试运行 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:&lt;name/repo.git&gt;

又是git push

【讨论】:

这不能回答问题。它已经说它使用的是那种形式而不是 https。如果在 https 上,它会完全跳过公钥检查,而是询问用户名/密码。【参考方案20】:

我可以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'.

【讨论】:

【参考方案21】:

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

    使用SSH,其格式如下: git@github.com:username/repository-name.git

    使用HTTPS,格式如下:https://github.com/username/repository-name.git

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

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

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

【讨论】:

以上是关于git push:权限被拒绝(公钥)的主要内容,如果未能解决你的问题,请参考以下文章

git push origin master拒绝错误权限(github)

将提交推送到亚马逊 ec2 时权限被拒绝(公钥)

git@github.com:权限被拒绝(公钥)[主目录回购] [重复]

Ansible git clone github 权限被拒绝(公钥)

无法在 Windows 上使用 Git bash 进行 ssh - 权限被拒绝(公钥)

SourceTree 总是权限被拒绝(公钥)