启用 2FA 时推送到 GitHub 没有个人访问令牌的存储库

Push to GitHub Repository without Personal Access Token when 2FA is enabled

我不久前在 GitHub 上设置了 2 因素身份验证。因此,一旦我在命令行中工作并想推送到我的存储库。我输入了我的用户名和密码 但由于出现这样的错误而失败

USERNAME@MYCOMPUTER:~/MyRepo$ git push
Username for 'https://github.com': GitHubUsername
Password for 'https://GitHubUsername@github.com': GitHubPassword 
remote: Invalid username or password.
fatal: Authentication failed for ' 
https://github.com/GitHubUsername/MyRepo/'

所以,我读了这个 并且 得到了解决方案 我必须 生成 一个 个人访问令牌 推送任何内容。很好,但我认为这是一个有点困难的过程,因为首先 我不记得大量的令牌 并且其次 将访问密钥存储在文本文件中并不安全要做的事。

所以,如果有人可以提供一个简单的解决方案来推送到我的存储库而不禁用 2FA,那就太好了。 - 谢谢!

您应该通过 ssh 使用 github,而不是通过 https 使用 Github。

https://help.github.com/en/articles/connecting-to-github-with-ssh

虽然 https 设置很容易,但设置 ssh 连接有点困难,这就是将 https 用作标准选项的原因。

当您想连接到github时,您需要按照以下步骤操作:

  1. 创建 ssh 密钥

    当您通过 ssh 连接时,它使用 ssh 密钥而不是普通密码,这提高了您的安全性,因为即使服务器遭到破坏也不会泄露您的密码,即使攻击者破坏了您的连接也无法更改您的数据发送或接收 to/from Github。 Ssh 密钥也有可选的密码,您需要提供密码才能使用所述密钥。

    通常,ssh-keys 与一个称为 ssh-agent 的程序组合在一起,这个程序基本上将解密的密钥“缓存”在内存中,或者永久地,或者超时,所以不必填写你的短时间内多次输入密码。

    You can create a key as follows:

    1. 运行 ssh-keygen -t ed25519 -C "your_email@example.com"
    2. 按照标准选项,设置密码。
    3. Optionally configure an ssh-agent
  2. 告诉 Github 你的新密钥

    当您创建 ssh 密钥时,它会生成 2 个文件,id_rsaid_rsa.pub.pub 文件包含 public 密钥。

    You can upload this key to Github 进入设置,按“ssh 键”,然后在其中添加密钥

  3. 更新本地存储库以使用 ssh 密钥

    现在您已经告诉 github 您的新外观密钥,您需要在磁盘上配置存储库以使用此密钥。

    您可以使用 git remote 命令来执行此操作:

    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    

    通过 git fetch 测试您的新设置,它应该询问您的 ssh 密钥密码,然后获取任何更新分支。