启用2FA后,Git身份validation失败

我只是启用2FA(我想不出任何其他更改),并要求我的用户名和密码。 我提供了两个,但他们是“错误的”。 我在这里尝试了很多的解决scheme: Git推送需要用户名和密码,但没有奏效。 特别是,当从https切换到ssh时,ssh密钥给出

权限被拒绝(publickey)。 致命的:无法从远程存储库读取。

$ git push warning: push.default is unset; its implicit value is changing in Git 2.0 from 'matching' to 'simple'. To squelch this message and maintain the current behavior after the default changes, use: git config --global push.default matching To squelch this message and adopt the new behavior now, use: git config --global push.default simple See 'git help config' and search for 'push.default' for further information. (the 'simple' mode was introduced in Git 1.7.11. Use the similar mode 'current' instead of 'simple' if you sometimes use older versions of Git) Username for 'https://github.com': ********** Password for 'https://mlbileschi@github.com': remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/mlbileschi/scala.git/' 

有小费吗?

您需要生成访问令牌。 您可以通过转到您的设置页面来创build一个。

在这里输入图像说明

在命令行中使用此访问令牌作为您的密码。

端到端解决scheme需要3个步骤。

  1. 荣誉Gergo Erdosi。 他的回答基本上是正确的,只是Github改变了这个设置页面。 截至2016年底,您需要从您的个人访问令牌页面 生成访问令牌

    在这里输入图像说明

    在命令行中使用此访问令牌作为您的密码。

  2. 您可以通过将其包含到您的项目远程URL中来保存您的用户名。 要做到这一点的一种方法是编辑你的.git/config ,将url行修改为以下格式:

    url = https://YOUR_USERNAME_HERE@github.com/owner/repo.git

  3. 您只能通过运行一次来​​保存密码:

    $ git config credential.helper store

    然后您的未来git密码将以明文forms存储在〜/ .git-credentials中,格式为https://user:PlaintextPassword@example.com

    以明文存储密码通常被认为是安全风险。 但在这个2FA的情况下,凭证不是您的真实密码,而是一个随机生成的string。 所以它与使用ssh私钥和无密码ssh私钥一样安全。 CAVEAT:请记住,如果您碰巧也在本机上使用另一个没有2FA的git帐户,那么这些真正的密码也将以明文forms存储。

PS:或者,您可以select使用基于ssh的login,使用密码保护的ssh私钥,这将更安全,不太方便,但这不在此答案的范围内。

我有一个类似的问题。 我不得不改变在git命令中使用的URL来包含我的用户名。

 git push https://YOUR_USERNAME_HERE@github.com/mlbileschi/scala.git 

然后当它要求PW使用您创build的访问令牌时,请按照Gergo Erdosi的回答中的说明进行操作。

在Linux上,您可以使用SSH密钥来validation您的GitHub身份。

1)生成一个新的SSH密钥( 源 )

打开terminal。

粘贴下面的文本,replace您的GitHub电子邮件地址。

 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 

这将创build一个新的ssh密钥,使用提供的电子邮件作为标签。


2)将密钥链接到您的GitHub帐户

打开terminal并复制生成的公钥

 cat ~/.ssh/id_rsa.pub 

应该输出一样

 ssh-rsa AAAAB3NzaC1y ... mKAKw== your_email@example.com 

导航到https://github.com/settings/keys然后单击;New SSH Key ,给它一个标题并复制粘贴公钥。

在这里输入图像说明


3)把https://改成git来源到ssh

打开terminal, cd到您的存储库位置并键入

 git remote set-url origin git@github.com:<github username>/<repository name>