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

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→设置→开发者设置→个人访问令牌。重新生成令牌并复制它。 在任何本地存储库上,当git推送时,输入您的用户名,密码是生成的令牌

无需为每个HTTPS Git操作手动输入令牌,您可以使用Git客户端缓存令牌。

在终端中输入如下命令:

# Set Git to use the credential memory cache
git config --global credential.helper cache

输入如下命令修改默认密码缓存超时时间。

# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'

其他回答

试试这个(对我很管用):

根据以下指南生成SSH密钥:生成新的SSH密钥 删除所有旧的远程使用HTTPS与git远程删除原点; 使用SSH引用添加一个新的远程(您可以通过存储库中的“code”按钮获得它,然后按“SSH”)。

适用于macOS, Windows和Linux

解决方案1

删除现有的存储库(如果当前有任何更改,请对其进行备份): Mv my-repo my-repo.backup 创建SSH密钥并将其添加到GitHub(参见GitHub文档) 为SSH克隆存储库:git克隆git@github.com:group/repo-name.git

方案二(推荐方案)

Git远程删除原点 您必须添加一个访问令牌(请参阅GitHub文档以生成令牌) Git远程添加origin https://<token>@<git_url>.git Git拉https://<token>@<git_url>.git

使用Visual Studio代码

删除你的GitHub访问:

git credential-osxkeychain erase
⏎  host=github.com
⏎  protocol=https

不是推就是拉 它将提示您一个模态对话框。单击“允许”并按照流程操作。

从GitHub的开发者设置中生成一个新的令牌 更新远程URL: git remote set-url origin https://<token>@github.com/<Git_URL> 拉: git拉https://<token>@<Git_URL>.git

这样就可以开始了。

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

我今天下午遇到了这个问题,并通过将参考文献3中所述的GitHub密码替换为参考文献2中生成的令牌来解决这个问题。

参考文献1:参见API和Git操作的令牌身份验证要求。不再支持该密码。 参考文献2:因此,您应该在本教程中生成一个令牌,并使用它代替您的密码作为凭据。 参考资料3:如果没有提示您输入用户名和密码,则您的凭据可能缓存在您的计算机上。您可以在Keychain中更新凭据,用本教程中描述的令牌替换旧密码。