推送到GitHub时2FA会出现问题

时间:2016-12-03 17:26:22

标签: git github git-push two-factor-authentication

我已经在我的Raspberry Pi上的GitHub上克隆了一个项目,创建了一个新分支并将所有内容都推送到了存储库。为此我需要下一个命令:

git clone https://www.github.com/heinpauwelyn/my_repo
git checkout -b raspberry
git push origin raspberry

我遇到的问题是我无法将分支机构推向GitHub.com。我需要输入我的用户名和密码,但我不能使用2FA。这是Git或GitHub中的错误,是否有办法获取身份验证密钥并输入?

我不会在GitHub上启用2FA。

5 个答案:

答案 0 :(得分:12)

使用2FA时,您必须创建一个个人访问令牌,以便在使用HTTPS URL在命令行上对GitHub进行身份验证时用作密码:https://help.github.com/articles/which-remote-url-should-i-use/#when-2fa-is-enabled

或者您可以使用ssh https://help.github.com/articles/which-remote-url-should-i-use/#cloning-with-ssh-urls进行克隆(也可能有用:https://help.github.com/articles/generating-an-ssh-key/

答案 1 :(得分:2)

使用2FA,您需要在推送代码时生成个人访问令牌。在将代码推送到Github时,该个人令牌将用作密码。您可以看到如何从https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line创建个人访问令牌。当您使用http url克隆存储库时将使用它。 它将适用于所有存储库。

如果您通过SSH克隆了克隆,那么启用2F身份验证后,可以非常轻松地将更改推送到正常状态,而无需进行任何更改。为此,您可以使用SSH密钥密码作为密码。 首先,它要求您针对存储库创建SSH密钥。您可以从https://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent生成SSH密钥。对于该生成的SSH密钥,该存储库将仅再次针对特定的存储库工作。

答案 2 :(得分:0)

您必须生成一个访问令牌并使用该访问令牌代替密码。 例如:

$ git clone https://github.com/username/repo.git
Username: your_username
Password: your_token

文档:https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line

答案 3 :(得分:0)

在GitHub帐户上添加2FA之后,您可以使用repo的HTTPS URL或的SSH URL从本地服务器进行推送,拉取,克隆或获取操作。区别将是:

使用HTTPS URL :现在要进行推,拉,获取或克隆操作,您必须从GitHub帐户生成一个个人访问令牌,要求输入密码时用作密码。您必须确保令牌安全。

访问:Creating a personal access token for the command line

使用SSH URL :对于通过回购协议的SSH URL进行推送,拉取,获取或克隆,您需要为帐户设置一个私钥和公共对。这将花费一些时间,但是一旦完成私钥和公钥的设置,就不会再提示您输入用户名或密码,因为现在GitHub知道了您的身份。

要创建私钥和公钥对,请阅读:Connecting to GitHub with SSH

使用HTTPS URL和SSH URL的区别

尽管HTTPS未被任何防火墙或任何网络阻止,但SSH有时可能被阻止,您可能无法使用它,但是这种情况很少发生。如前所述,在使用HTTPS时,会要求您提供用户名和密码(这是您的个人访问令牌),您可以使用credential.helper对其进行缓存,但将其另存为纯文本。

在使用SSH时,您可以为私钥How do I add a password to an OpenSSH private key that was generated without a password?

生成密码短语

现在,您的私钥将受到保护,但是每当您进行“推”,“拉”,“克隆”或“提取”操作时,每次都会要求输入密码。为避免您可以使用SSH代理,SSH Key - Still asking for password and passphrase

答案 4 :(得分:0)

如果您克隆了https,并且出于任何原因想要继续使用它,则可以编辑queries.find_by_sql(" SELECT location_id, created_at FROM (SELECT DISTINCT ON (queries.location_id) * FROM queries ORDER BY queries.location_id, queries.created_at DESC) queries ORDER BY queries.created_at DESC LIMIT 20 ") 以包括根据https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line生成的个人访问令牌。

示例.git/config条目:

.git/config

这会将令牌密钥放在计算机上的纯文本文件中,这很不好,但是如果您需要快速破解以使其正常运行,那么它就可以了。

干杯!