【问题标题】:Pushing from Eclipse to my GitHub repository via HTTPS stopped working: "git-receive-pack not permitted" error通过 HTTPS 从 Eclipse 推送到我的 GitHub 存储库停止工作:“git-receive-pack not allowed”错误
【发布时间】:2021-11-28 19:26:26
【问题描述】:

我最近在几周前推送了我的 GitHub 存储库。我从 GitHub 得到了一条主线,说 GitHub 即将退出常规授权,并将用另一种授权方法替换它。

所以今天我将新的更新推送到我的 GitHub 存储库并收到消息:

git-receive-pack not permitted

这就引出了两个问题:

  1. EGit 现在停止工作了吗?
  2. 我有 Eclipse 2021-03,如何解决此问题以便进行推送?

【问题讨论】:

  • GitHub 已禁用 HTTPS 协议。将 git://... 与本地计算机上的 Eclipse 已知并上传到您的 GitHub 帐户的 SSH 密钥一起使用。
  • @howlger 谢谢。我怎么能在实践中做到这一点?我应该按什么?
  • 如果您没有 SSH 密钥,请在 Eclipse 中转到首选项 General > Network Connections > SSH2 选项卡 Key Management 并点击 生成 RSA 密钥...。在您的 GitHub 帐户中,转到 帐户设置 > SSH 和 GPG 密钥 并添加公钥。最后,将存储库 URL 从 https://... 更改为 git://...
  • @howlger 好的。我已经在 Eclipse 中生成了 RSA 密钥。我将该密钥放入 SSH 和 GPG 密钥中并添加一个公钥。我应该按的是 SSH 密钥还是 GPG 密钥?
  • 这行得通。 youtube.com/… 如果需要,请发布答案。我可以接受。

标签: git eclipse github egit


【解决方案1】:

Since August 13, 2021, GitHub does not support authentication via HTTPS with your GitHub account password for security reasons anymore。相反,在 Eclipse 中,当推送到 GitHub 存储库或从私有存储库获取时,您将收到 git-upload-pack not permitted on 'https://github.com...' 错误。

作为解决方案,使用任一

  • GitHub 特定的个人访问令牌作为密码,而不是您以前使用的 GitHub 帐户密码或
  • 使用 SSH 密钥进行 SSH,其中私钥和公钥在您的本地计算机上并在 Eclipse 中配置,而公钥则上传到您的 GitHub 帐户。

个人访问令牌(GitHub 特定)

  1. 转到your GitHub account to Settings > Developer settings > Personal access tokens 网站:
    1. 点击右上角的生成新令牌按钮
      • 输入一个备注,例如GitHub repo token
      • 选择到期,例如没有过期
      • 勾选复选框repo
    2. 点击底部的生成令牌按钮
    3. 复制生成的token到剪贴板
  2. 在 Eclipse 的 Git Repositories 视图中:
    1. 右键单击 Remotes GitHub 的子节点origin 或您在您已经克隆了存储库)并选择 Configure Push...
    2. 点击更改...按钮更改右上角的URI
    3. 用复制生成的 GitHub token 替换密码
    4. 点击完成保存以应用更改

SSH

  1. 创建一个 SSH 密钥(如果您已经拥有一个,请跳过此步骤):
    1. 在 Eclipse 中,在 preferences General > Network Connections > SSH2 选项卡 Key Management 中点击 生成 RSA 密钥... 按钮
    2. 点击保存私钥...并选择一个位置,最好是用户主目录的子文件夹.ssh
  2. 上传公钥到您的 GitHub 帐户:
    1. 对于新创建的密钥,密钥管理选项卡中显示的字符串复制到剪贴板;对于现有密钥,将其添加到首选项 General > Network Connections > SSH2 选项卡 General 并复制公钥文件的内容<name>.pub
    2. 转到您的GitHub account settings to the SSH and GPG keys 部分并点击新的 SSH 密钥 按钮
    3. 粘贴复制的公钥到Key字段
  3. 将 HTTPS 更改为 SSH URL 已克隆的存储库:
    1. 在 Eclipse 中,在 Git Repositories 视图中右键单击存储库并选择 Properties 并单击打开按钮
    2. config 文件的文本编辑器中,将远程 URL 更改如下:

      HTTPS(旧;不再适用于 push ):
      url = <b>https</b><b>://</b>github.com<b>/</b>&lt;username&gt;/&lt;repo&gt;.git

      SSH(新):
      url = <b>git@</b>github.com<b>:</b>&lt;username&gt;/&lt;repo&gt;.git

另见:

【讨论】:

  • 对于任何阅读本文的人:当然,HTTPS 效果很好:如果您不想切换到 SSH,则不必切换到 SSH。
  • @VonC 我扩展了关于如何在 Eclipse 中切换到个人 GitHub 访问令牌的答案。如果您早点告诉我而不是添加您自己的答案而不是说明如何在 Eclipse 中执行此操作,那将会更好,更有帮助。如果可以的话,我会给你这个提示的声望点,但不幸的是,在 Stack Overflow 上实现游戏化的方式是不可能的。
  • 每个新的 Eclipse 安装...我访问了您的答案,它仍然有效!
【解决方案2】:

GitHub 已禁用 HTTPS 协议

肯定不是。

我使用 HTTPS 推送到 GitHub 没有任何问题,但我现在必须使用 PAT (Personal Access Token) 作为密码,而不是 GitHub 用户帐户密码。

确保创建一个新令牌,该令牌将遵循 new token format(2021 年 3 月)

ghp_ 用于个人访问令牌

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-16
    相关资源
    最近更新 更多