configurationGit客户端,比如GitHub for Windows,不要求authentication
我已经安装了GitHub for Windows和GitExtensions,并在我的path中有多个版本的git.exe。
C:\Users\Rajat\AppData\Local\GitHub\PortableGit_93e8418133eb85e81a81e5e19c272776524496c6\cmd\git.exe C:\Users\Rajat\AppData\Local\GitHub\PortableGit_93e8418133eb85e81a81e5e19c272776524496c6\bin\git.exe E:\cygwin\bin\git.exe C:\Program Files (x86)\Git\cmd\git.exe C:\Program Files (x86)\Git\bin\git.exe
现在,当我用最后三个git.exe
的任何一个做git push origin master
的时候,它会询问我的用户名。 但便携式Git不要求用户名。 看下面的截图:
心形的angular色只是一个^C
所以忽略了。
在这种情况下如何处理authentication? 最终,我想要最后三个Gits不要求授权。 那可能怎么样?
我在GitHub的Git中发现了两个额外的文件,但我怀疑它们是否重要:
对于Windows本身的GitHub, Paul Betts ( GitHub的工作人员 )温和地提醒大家, G4W已经包含了一个凭证助手 (基于CryptProtect ,我认为是CryptProtectData
函数 )
请参阅下面的答案 。
对于那些不使用G4W的人,请继续阅读。
添加到我以前的答案 (通过控制台/命令行推送到GitHub时):
像~/.netrc
(在Unix上)或%HOME%/_netrc
(在Windows上)这样的文件可以帮助你避免input你对GitHub的每一个git push的凭证 。
您可以在netrc
文件中存储所需的许多证书。
(用于GitHub或其他回购托pipe服务提供商)
但:
- 你不想存储你的主要GitHub密码帐户
- 你不想要一个纯文本文件。
以下各节讨论这些问题:
在您的GitHub帐户上启用双因素身份validation(2FA)
(2013年9月3日)
通过应用程序configuration2FA ,始终通过应用程序,而不是通过短信,如果你可以避免它。
原因是,通过该激活过程,您可以访问您的双因子密钥 ,该密钥用于每隔30秒生成一次第二个因子validation:
这样,你可以去任何GAuth( 谷歌身份validation器 )客户端 ,input相同的2FA密钥,并看到完全相同的代码,你会通过短信。
除此之外,如果你没有电话服务,它仍然有效;)
当然,第一个使用的客户端是你的Android手机或iPhone上的GAuth 。
这意味着您不必等待短信,而是将您的2FA保存在手机上。
但是,拥有您的密钥可以让您不受限于手机上的客户端。
你可以去任何其他的客户,如:
- JAuth ,一个美丽的双因素桌面客户端( codeon GitHub )
- html5-google-authenticator :一个GAuth Authenticator客户端网页 ,您可以在其中看到您的令牌每30秒产生一次,就像您在手机上或通过短信所看到的一样。
- 一个桌面系统托盘
- 一个浏览器扩展(如FireFox的gauth-authenticator )
对于所有这些客户端(使用GAuth的电话,或桌面客户端或网页),您将需要双因素密钥 。
如果你通过短信激活你的2FA:
- 你不知道你的秘密密钥
- 你不能使用任何其他的GAuth客户端
- 你只能通过你的手机接收你的令牌(如果你有电话服务和/或如果你有你的手机)
注意:如果你在Android的Gauth客户端添加了一个密钥,而没有记住第一个密钥, 所有的都不会丢失 。
(但是你需要一个根深蒂固的手机)
$ 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账户的Account Settings
部分 ):
(另见关于在哪里保存这些代码的最后一节)
encryption你的_netrc
文件
(请参阅使用git1.8.3 + :gpgencryption的凭证助手netrc )
您需要在该文件中encryption至less以下两个凭据:
machine github.com login username password xxxx protocol https machine gist.github.com login username password xxxx protocol https
然后你只保留~/.netrc.gpg
或%HOME%/_netrc.gpg
但是,如果您启用了上述新的双因素身份validation,则“ xxxx
”不会是您的GitHub帐户:请参阅下一节“个人访问令牌”。
生成个人访问令牌
如果您激活了2FA,则无法使用GitHub密码推送。
Anonymous access to user/repo.git denied
这里是你会看到( 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账户的Applications
部分,并生成一个个人访问令牌 :
该令牌不需要双因素身份validation :您可以在您的_netrc
文件中将其用作密码,并且您将能够推送到GitHub。
但与您的主要GitHub帐户密码的区别是:
您可以撤消个人访问令牌 (并生成新的令牌 ),同时仍然保持主密码不变。
如果您在~/.netrc.gpg
文件中encryption了主要的GitHub密码,则可以用新的个人令牌replace它:
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(Windows上的Gnu)命令的帮助下,其中包括sed
。
保存你的GitHub凭证
我build议像lastpass.com这样的在线凭据存储
您需要保存:
- 您的GitHub帐户密码
- 你的2FA密钥
- 您的2FA恢复代码
- 你的个人令牌
如果你使用GitHub for Windows,你所需要做的就是:
- 确保您已经至lesslogin了一次GUI应用程序
- 点击“Git Shell”链接
GitHub已经在命令行上为你解决了这个问题,对于HTTPS和基于SSH的遥控器都是如此
https://help.github.com/articles/set-up-git
密码caching部分说:
如果你不想使用GitHub for Windows,你可以在这里下载你的操作系统的帮手:
这样做和任何其他git.exe将不需要密码的工作。 🙂