Github OpenSSH要求输入https链接的密码

时间:2018-11-19 10:03:41

标签: git github

我正在尝试推送到远程存储库。远程来源是一个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

2 个答案:

答案 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上,以commentedArpit J身份登录,只需转到/打开您的钥匙串访问权限->搜索github.com相关文件->并在其中编辑凭据。

https://help.github.com/assets/images/help/setup/keychain-access.png

请参见“ Updating credentials from the OSX Keychain

例如,在Windows上,该名称为Windows Credential Managers
打开Windows凭据存储,然后查看第一个用户是否在此注册:删除该条目,然后您便可以向第二个用户进行身份验证。

(这里是BitBucket的示例)

https://kwilson.io/blog/wp-content/uploads/2015/01/4-store.png

在命令行中,为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以获得详细信息。