通过HTTPS从Eclipse推送到我的GitHub存储库停止工作:“不允许git-receive-pack”错误
几周前,我最近推送了我的 GitHub 存储库。我从 GitHub 得到一个主要信息,即 GitHub 即将退出常规授权,并准备用另一种授权方法替换它。
所以今天我向我的 GitHub 存储库推送了一个新更新并收到了消息:
git-receive-pack not permitted
这就引出了两个问题:
- EGit 现在停止工作了吗?
- 我有 Eclipse 2021-03,我该如何解决这个问题以便我可以进行推送?
回答
自2021年8月13日,GitHub上不支持通过认证HTTPS与您的GitHub账号密码出于安全原因了。相反,在 Eclipse 中,当推送到 GitHub 存储库或从私有存储库获取时,您将收到git-upload-pack not permitted on 'https://github.com...'错误消息。
作为解决方案,请使用
- GitHub 特定的个人访问令牌作为密码,而不是您以前使用的 GitHub 帐户密码或
- 使用 SSH 密钥进行SSH,其中私钥和公钥在您的本地计算机上并在 Eclipse 中配置,而公钥则上传到您的 GitHub 帐户。
个人访问令牌(特定于 GitHub)
- 转到您的GitHub的帐户,以设置>开发者设置>个人访问令牌的网站:
- 单击右上角的生成新令牌按钮
- 输入注释,例如
GitHub repo token - 选择过期,例如没有过期
- 勾选复选框回购
- 输入注释,例如
- 单击底部的生成令牌按钮
- 将生成的令牌复制到剪贴板
- 单击右上角的生成新令牌按钮
- 在 Eclipse 中,在Git 存储库视图中:
- 右键单击GitHub的Remote s子节点(
origin或您在克隆存储库时选择的名称)并选择配置推送... - 单击更改...按钮更改右上角的 URI
- 用复制的生成的 GitHub令牌替换密码
- 单击完成并保存以应用更改
- 右键单击GitHub的Remote s子节点(
SSH
- 创建一个 SSH 密钥(如果你已经有了,请跳过这一步):
- 在 Eclipse 中,在首选项General > Network Connections > SSH2选项卡Key Management点击Generate RSA Key...按钮
- 点击Save Private Key...并选择一个位置,最好是
.ssh用户主目录的子文件夹
- 将公钥上传到您的 GitHub 帐户:
- 对于新创建的密钥,将密钥管理选项卡中显示的字符串复制到剪贴板;对于现有密钥,将其添加到首选项General > Network Connections > SSH2选项卡General并复制公钥文件的内容
<name>.pub - 转到您的GitHub 帐户设置的SSH 和 GPG 密钥部分,然后点击新建 SSH 密钥按钮
- 将复制的公钥粘贴到Key字段中
- 对于新创建的密钥,将密钥管理选项卡中显示的字符串复制到剪贴板;对于现有密钥,将其添加到首选项General > Network Connections > SSH2选项卡General并复制公钥文件的内容
- 将 HTTPS 更改为已克隆存储库的SSH URL:
- 在 Eclipse 中,在Git Repositories视图中右键单击存储库并选择Properties并单击Open按钮
- 在
config文件的文本编辑器中,按如下方式更改远程 URL:HTTPS(旧;不再适用于推送):
url = https://github.com/<username>/<repo>.gitSSH(新):
url = git@github.com:<username>/<repo>.git
也可以看看:
- 视频教程使用 SSH 从 Github 导入存储库到 Eclipse
- EGit 用户指南
THE END
二维码