完全相同代码。
除此之外,如果您没有电话服务,它仍然可以工作;)
当然,首选客户端是Android手机或iPhone上的GAuth。
![GAuth on Android](https://istack.dev59.com/0pm1b.webp)
That means 意味着您无需等待短信,且可以在手机上保留2FA。但是,拥有您的秘密密钥将使您不受限于手机客户端。您可以使用任何其他客户端,例如:
- JAuth,一个漂亮的两步验证桌面客户端 (Github上的代码)
- html5-google-authenticator: 一个GAuth Authenticator客户端Web页面,您可以在其中每30秒看到生成的令牌,就像您在手机或通过短信中看到的一样。
- 一个桌面系统托盘
- 浏览器扩展程序(例如FireFox的gauth-authenticator)
对于所有客户(使用GAuth手机应用程序、桌面客户端或网页),您需要使用双重身份验证密钥。
如果您通过短信激活了2FA:
- 您不知道您的密钥
- 您无法使用其他GAuth客户端
- 您只能通过手机接收令牌(如果您有电话服务和/或您有手机)
注意:如果您在Android上的Gauth客户端中添加了密钥,而没有先记住该秘密密钥,则并非一切都失去了。
(但是您需要一个已root的手机)
$ adb shell
# sqlite3 /data/data/com.google.android.apps.authenticator/databases/databases
sqlite> select * from accounts;
1|your@email.address|your2factorkey|0|0
sqlite> .quit
#exit
不要忘记获取并保存相关的恢复代码(在您的GitHub账户的帐户设置
部分):
![Recovery code](https://istack.dev59.com/6yKeL.webp)
(还请参阅有关代码存储位置的最后一节)
加密你的_netrc
文件
(参见credential helper netrc with git1.8.3+: gpg encryption)
您需要加密该文件中至少这两个凭据:
machine github.com
login username
password xxxx
protocol https
machine gist.github.com
login username
password xxxx
protocol https
你需要保留的是 ~/.netrc.gpg
或者 %HOME%/_netrc.gpg
。
但是,如果你启用了上面提到的新的双因素身份验证,'xxxx
' 将不再是你的 GitHub 账户:请参见下一节关于“个人访问令牌”的内容。
生成个人访问令牌
如果您已启用 2FA,则无法使用 GitHub 密码进行推送。
拒绝匿名访问用户/存储库.git
以下是您将看到的内容(gpg
部分是因为我使用 netrc
凭据助手):
C:\Users\VonC\prog\git\git>git push origin
Using GPG to open %HOME%/_netrc.gpg: [gpg2 --decrypt %HOME%/_netrc.gpg]
You need a passphrase to unlock the secret key for
user: "auser <email@email.com>"
2048-bit RSA key, ID A2EF56, created 2012-09-12 (main key ID DC43D6)
remote: Anonymous access to VonC/git.git denied. <=====
fatal: Authentication failed for 'https://VonC@github.com/VonC/git/' <=====
所以前往您的GitHub帐户的开发人员
部分(子部分个人访问令牌
),并生成一个个人访问令牌:
![Personal token](https://istack.dev59.com/JiTRj.webp)
该令牌不需要双重身份验证:您可以将其用作_netrc
文件中的密码,并且您将能够轻松地推送到GitHub。但与您的主GitHub帐户密码的区别是:
您可以撤销个人访问令牌(并生成新的),同时仍保持主密码不变。如果您已经在~/.netrc.gpg
文件中加密了您的主GitHub密码,则可以使用新的个人令牌替换它。
gpg -d %HOME%\_netrc.gpg | sed "s/yourPassord/YourPersonalAccessToken/g" | gpg -e -r auser --yes -o %HOME%\_netrc.gpg
为了易读性而多行:
gpg -d %HOME%\_netrc.gpg |
sed "s/yourPassord/YourPersonalAccessToken/g" |
gpg -e -r auser --yes -o %HOME%\_netrc.gpg
那甚至在Windows上也可以运行,借助类Unix的GoW(Gnu on Windows)命令,其中包括sed
。
保存你的GitHub凭据
我建议使用在线凭据存储,例如lastpass.com
您需要保存以下内容:
- 您的GitHub账户密码
- 您的2FA密钥
- 您的2FA恢复代码
- 您的个人令牌
![LastPass](https://istack.dev59.com/pTWLW.webp)