我已经在我的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。
答案 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
这会将令牌密钥放在计算机上的纯文本文件中,这很不好,但是如果您需要快速破解以使其正常运行,那么它就可以了。
干杯!