通过 HTTPS 从 Eclipse 推送到我的 GitHub 存储库停止工作:"git-receive-pack not permitted" 错误

Pushing from Eclipse to my GitHub repository via HTTPS stopped working: "git-receive-pack not permitted" error

我最近在几周前推送了我的 GitHub 存储库。我从 GitHub 得到了一条消息,说 GitHub 即将退出常规授权,并打算用另一种授权方式取而代之。

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

git-receive-pack not permitted

这引出了两个问题:

  1. EGit 现在停止工作了吗?
  2. 我有 Eclipse 2021-03,我该如何解决这个问题才能进行推送?

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...' 错误。

作为解决方案,使用

  • a GitHub 特定 个人访问令牌 作为密码,而不是您以前使用的 GitHub 帐户密码或
  • SSH with an SSH key 其中私钥和 public key 在本地机器上并在 Eclipse 中配置,public key 已上传转至您的 GitHub 帐户。

个人访问令牌(GitHub 特定)

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

SSH

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

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

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

另请参阅:

GitHub has disabled the HTTPS protocol

当然不是。

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

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

ghp_ for Personal Access Tokens

我在使用 eclipse 和 git 时使用了 ssh,但使用错误的密钥时遇到了问题。

搜索错误时:“无法在 github.com:22 登录” 它把我送到了这个答案:Cannot log in GitHub into Eclipse 最终把我带到了这个答案。

对于任何偶然发现此问题的人,您需要导航至

Window -> Preferences 

然后从那里展开

General -> Network Connections -> SSH2

然后在右窗格中select“常规”选项卡并单击添加私钥..按钮和select用于git。如果您为密钥使用了密码(您应该这样做),那么系统会提示您输入密码。

在此之后我可以再次推拉没有问题。