我正在尝试推送到远程存储库。远程来源是一个https链接。但是,当我尝试推送时,提示输入我的用户名,然后一个OpenSSH弹出窗口要求输入密码。输入密码(或个人访问令牌)后,出现错误
expect(response).to redirect_to(alice)
git配置文件如下。特别是所有链接看起来都是https,而不是ssh,所以我不知道为什么OpenSSH要求输入密码。上周我能够推动,并且(据我所知)我什么都没改变。从那时起,我当然再也没有推销过其他产品了。
remote: Password authentication is not available for Git operations.
remote: You must use a personal access token or SSH key.
remote: See https://******/settings/tokens or https://******/settings/ssh
fatal: unable to access 'https://******': The requested URL returned error: 403
答案 0 :(得分:1)
该错误消息是因为您的帐户设置了双重身份验证(或可能是单点登录)。启用2FA后,GitHub不再允许您使用密码进行身份验证。
您可以选择使用SSH密钥推送到您的帐户,也可以创建个人访问令牌,该令牌可以代替HTTPS密码使用。如果您使用的是Windows,则可以使用内置的凭据帮助器将加密的令牌存储在Windows凭据存储中,因此只需输入一次即可。
由于您似乎正在使用GitHub或GitHub企业实例,因此请注意,如果您希望令牌访问私有存储库(对于公共存储库,则为令牌)至少需要包含“ repo”许可(对于公共存储库,则为“ public_repo”),并且如果您的组织使用单一登录系统,则必须启用single sign-on for that token。如果选择使用SSH,则必须在必要时类似地为SSH密钥启用SSO。
即使您未使用SSH,也看到OpenSSH Askpass窗口的原因是因为Git for Windows利用该工具提示您输入密码,因此您无需输入终端。
答案 1 :(得分:0)
首先,请确保考虑使用git config -l
的所有git config。
还有InsteadOf
指令的grep,它可以在SSH中更改您的https URL,或者相反。
git config -l | grep -i insteadof
然后,检查(对于HTTPS URL)您的凭据缓存,默认情况下,Git将提供旧帐户/密码(缓存)的凭据(GitHub帐户和密码)。
查看您是否有 credential helper ,该缓存会缓存用于身份验证的(旧帐户)凭据(用户名/密码)。
git config credential.helper
在Mac上,以commented的Arpit J身份登录,只需转到/打开您的钥匙串访问权限->搜索github.com相关文件->并在其中编辑凭据。
请参见“ Updating credentials from the OSX Keychain”
例如,在Windows上,该名称为Windows Credential Managers。
打开Windows凭据存储,然后查看第一个用户是否在此注册:删除该条目,然后您便可以向第二个用户进行身份验证。
(这里是BitBucket的示例)
在命令行中,为seen here:
git credential reject protocol=https host=github.com <empty line here>
,然后设置新的用户名和密码:
git credential fill protocol=https host=github.com <empty line here>
输入
git help credential
以获得详细信息。