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 。

Android上的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恢复代码
  • 你的个人令牌

LastPass的

如果你使用GitHub for Windows,你所需要做的就是:

  1. 确保您已经至lesslogin了一次GUI应用程序
  2. 点击“Git Shell”链接

GitHub已经在命令行上为你解决了这个问题,对于HTTPS和基于SSH的遥控器都是如此

https://help.github.com/articles/set-up-git

密码caching部分说:

如果你不想使用GitHub for Windows,你可以在这里下载你的操作系统的帮手:

这样做和任何其他git.exe将不需要密码的工作。 🙂