6

我知道 GitHub 中的 SSH 不会导致任何问题(每次都无需输入用户名/密码,即),但我需要使用 HTTPS 进行我的回购。

现在,我git init编辑了 repo,我提交了,我git remote add origin https://github.com/user/repo.git 按照 GitHub 的建议做了一个。

我正要做一个git push -u origin master:首先它提示我输入用户名和密码,然后回答:

remote: Anonymous access to user/repo.git denied.
fatal: Authentication failed for 'https://github.com/user/repo.git/'

我 300% 确定我输入了正确的密码(无论如何我又试了几次)。我到处搜索,然后我尝试了最后的机会:为 Mac 安装 GitHub 应用程序。我输入了我的凭据,输入了他们发送给我的 2 因素身份验证代码,然后再次尝试推送:这次成功了。

为什么?GitHub 应用在幕后做了什么?它与2-factor auth有关吗?

无论如何,我将无法在我设置的每台机器上下载该应用程序,也许可以通过使用一些脚本自动执行此过程。

4

1 回答 1

17

如果您已激活双因素身份验证,您的 GitHub 密码将不起作用。

您需要生成一个个人访问令牌,正如我在“配置 Git 客户端,例如 Windows 的 GitHub,不要求身份验证”中解释的那样。

该长(40 个字符)密码将用作您的 GitHub 密码,无需进行第二次身份验证。

PAT(个人访问令牌)和您的 Github 密码帐户之间的区别:

  • 它不需要第二步,但是:
  • 它比简单的密码更复杂(不需要记住)
  • 您可以根据需要生成任意数量(例如,用于访问 GitHub 的每台不同计算机)
  • 您可以随时撤销它(比更改您的 GitHub 密码更容易)

你可以在一个.netrc.gpg文件中加密你的 GitHub 凭证,正如我在“ Is there a way to skip password typing when using https://github ”中说明的那样。
我发现这远远优于内存缓存机制(如 credential-osxkeychain),因为您不必在每个会话中输入您的 GitHub(长而复杂的令牌)密码。
您只需键入您的 gpg 密钥的密码短语,用于该 GitHub 登录/令牌凭证,或您在 ~/.netrc.gpg文件中加密的任何其他凭证。

于 2013-10-07T11:38:32.947 回答