我使用用户名密码来推送我的代码。它工作了几个月,但突然我不能这样做,并得到这个错误:

Username for 'https://github.com': shreyas-jadhav
Password for 'https://shreyas-jadhav@github.com':
remote: Password authentication is temporarily disabled as part of a brownout. Please use a personal access token instead.
remote: Please see https://github.blog/2020-07-30-token-authentication-requirements-for-api-and-git-operations/ for more information.

请注意,这个链接没有任何帮助。即使使用生成的令牌也无济于事。

主持人注:这是GitHub计划的一部分,很快将是永久的服务变化


当前回答

GitHub已禁用密码认证,且不再支持密码认证。创建并使用个人访问令牌(PAT)而不是密码。

以下步骤:

Remove GitHub stored credentials from the keychain. (For example, using "Keychain Access" on Mac, or "Credential Manager" on Windows) Generate access-token from GitHub Settings → Developer Settings → Personal access tokens → Generate new token Save the token - as it will be available there for once only Run command git fetch (or git push, if fetching doesn't require permissions) If on Windows, you must run this from PowerShell, not the command prompt (CMD). The command prompt consistently fails with the remote: Password authentication is temporarily disabled message, despite identical inputs. It will ask for your user name and password. If it does not ask you for your username and password, you must change your Git remote URL to contain your username: https://USERNAME@github.com/repo-owner/repo-name.git (see approach 2 for instructions on changing remote URL) Use the access token instead of the password when it asks for a password (you will have to enter it twice)

或者第二种方法:

从GitHub生成访问令牌: 设置→开发人员设置→个人访问令牌→生成新的令牌 在本地更新origin的URL: git remote set-url origin https://<token>@<git_url>.git 拉一次:git拉https://<token>@<git_url>.git

其他回答

首先从帖子:API和Git操作的令牌认证要求,它说

2021年年中-所有经过身份验证的Git操作都需要个人访问或OAuth令牌。

所以你需要使用个人访问令牌(PAT)来推送:

1获取您的个人访问令牌

在这里登录以访问存储库并添加一个新的个人访问令牌:个人访问令牌。生成一个并保持令牌的安全(离开后无法显示它)。

(在Android Studio中,您需要获得“repo”,“gist”和“read:org”的许可)

2使用个人访问令牌进行推送

在你得到令牌后,你可以用如下命令进行推送:

git push https://[personal access token]@github.com/[user name]/[repository Name].git

GitHub正在取消用户名密码认证

其他人提到的另一种方法:

您可以安装和配置GitHub CLI。使用OAuth进行设置要好得多。不需要手动从密钥链中删除凭据。

在macOS上使用Homebrew (brew),安装甚至更简单:

执行命令brew install gh,执行如下命令:

您想登录哪个账户?GitHub.com,选择GitHub Git操作的首选协议是什么?选择HTTPS 用你的GitHub凭证验证Git ?选择是的 您想如何验证GitHub CLI?选择“使用web浏览器登录” 复制终端-> B7C1-8E67中显示的代码 按Enter键在浏览器中打开github.com 使用浏览器验证身份

完成了。

开始像往常一样使用Git命令。

macOS解决方案

我只是按照下面的说明,这就解决了我的问题。

为GitHub生成一个个人访问令牌。生成令牌的过程 打开您的钥匙串访问。 搜索github.com,双击它。 用最近生成的密钥更新密码。

注意:我不确定这是否适用于其他操作系统用户。

还有一个非常简洁的脚本,有助于将HTTPS克隆的Git存储库转换为ssh协议,而无需删除和克隆Git存储库:

将HTTPS GitHub克隆转换为使用SSH

Ubuntu服务器和现有Git存储库的解决方案

删除密码:

git config --global --unset user.password;
git config --local --unset user.password;

改变remote.origin.url。用你的GitHub用户名替换<用户名>:

git config --global --replace-all remote.origin.url "https://<username>@github.com/PPEProjects/smile-eyes-be.git";
git config --local --replace-all remote.origin.url "https://<username>@github.com/PPEProjects/smile-eyes-be.git"

拉/ push

git pull
git push origin HEAD:develop

输入从个人访问令牌生成的个人访问令牌。