启用 2FA 时无需个人访问令牌即可推送到 GitHub 存储库

kar*_*lad 10 git push commit github token

我不久前在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/'
Run Code Online (Sandbox Code Playgroud)

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

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

Fer*_*big 7

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

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

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

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

  1. 创建 ssh 密钥

    当您通过 ssh 连接时,它使用 ssh 密钥而不是普通密码,这会提高您的安全性,因为即使服务器被破坏也不会泄露您的密码,甚至攻击者破坏您的连接也无法更改您发送或接收的数据/来自Github。SSH 密钥还具有可选密码,您需要提供这些密码才能使用该密钥。

    通常,ssh-keys 与一个名为 ssh-agent 的程序结合在一起,该程序基本上将解密的密钥永久或超时地“缓存”在内存中,因此不必在一个文件中多次填写密码。短期内。

    您可以按如下方式创建密钥:

    1. 跑步ssh-keygen -t ed25519 -C "your_email@example.com"
    2. 按照标准选项,并设置密码。
    3. 可选择配置 ssh-agent
  2. 告诉 GitHub 你的新密钥

    当您创建 ssh 密钥时,它会生成 2 个文件,id_rsa并且id_rsa.pub.pub文件包含公钥。

    您可以通过转到设置、按“ssh 键”并在其中添加密钥来将此密钥上传到 Github

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

    现在您已经向 github 告知了新的 fance 密钥,您需要在磁盘上配置存储库以使用此密钥。

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

    git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
    
    Run Code Online (Sandbox Code Playgroud)

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