配置Git客户端,如GitHub for Windows,不要求身份验证

时间:2012-12-10 11:43:19

标签: git github github-for-windows

我已经安装了GitHub for Windows和GitExtensions,并在我的路径中安装了多个版本的git.exe。

enter image description here

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 push origin master中的任何一个进行git.exe时,它会询问我的用户名。但Portable Git不会要求用户名。请参阅以下屏幕截图:

enter image description here

心形角色只是^C所以忽略它。

在这种情况下如何处理身份验证?最后,我希望最后三个Gits不要求授权。怎么可能?

我在GitHub的Git中找到了两个额外的文件,但我怀疑它们是否重要:

enter image description here

3 个答案:

答案 0 :(得分:52)

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

  1. 确保您至少登录过一次GUI应用
  2. 点击“Git Shell”链接
  3. GitHub已经在命令行上为你解决了这个问题,对于HTTPS和基于SSH的遥控器都是

答案 1 :(得分:42)

对于Windows本身的GitHub,Paul BettsGitHub staff)会温和地提醒所有人 G4W已经包含了凭据帮助(基于 CryptProtect 和我想CryptProtectData function) 请参阅his answer below

对于那些不使用G4W的人,请继续阅读。


添加到我的previous answer(通过控制台/命令行推送到GitHub时):

~/.netrc(在Unix上)或%HOME%/_netrc(在Windows上)这样的文件可以帮助您避免输入您对GitHub进行的每次git推送的凭证

您可以在netrc文件中存储所需的凭据 (对于GitHub或其他回购托管服务提供商)
但是:

  • 您不想存储主GitHub密码帐户
  • 你不希望那些是纯文本文件。

以下各节介绍了这些问题:


启用two-factor authentication (2FA) on your GitHub account

(2013年9月3日)

通过应用程序配置2FA ,始终通过应用永远通过文字短信,如果您可以避免它。

原因是,通过该激活过程,您可以访问双因素密钥,该密钥用于每30秒生成第二个因子身份验证:

two factor secret string

通过这种方式,您可以转到任意GAuth(Google Authenticator)客户端,输入相同的2FA密钥,然后查看完全相同的代码通过短信。
除此之外,如果您没有电话服务,它仍然有效;)

当然,您的Android手机或iPhone上的first client to use is GAuth

GAuth on Android

这意味着您无需等待短信,并将2FA保留在手机上。

但是,使用您的密钥可以使您不仅限于手机上的客户端 您可以访问任何其他客户,例如:

对于所有这些客户(通过手机使用GAuth,或使用桌面客户​​端或网页),您将需要双因素密钥

如果您通过短信激活了2FA:

  • 你不知道你的密钥
  • 您不能使用任何其他GAuth客户端
  • 您只能通过手机接收令牌(如果您有电话服务和/或根本没有手机)

注意:如果您在Android上的Gauth客户端中添加了一个密钥,而没有记住首先说明的密钥,all is not lost
(但你需要一部扎根电话)

$ 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

不要忘记获取然后保存相关的恢复代码(在Account Settings section of your GitHub account中):

Recovery code

(另请参阅上一节有关 保存这些代码的内容)


加密_netrc文件

(请参阅 credential helper netrc with git1.8.3+ :gpg加密)

您需要在该文件中至少加密这两个凭据:

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密码。

<强> Anonymous access to user/repo.git denied

您会看到以下内容(gpg部分是因为我使用了netrc credential helper):

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/'  <=====

请转到 Developer section of your GitHub Account (第Personal access tokens小节),然后生成个人访问令牌

Personal token

该令牌不需要双因素身份验证:您可以在_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

在类似unix的GoW (Gnu on Windows)命令(包括sed)的帮助下,即使在Windows上也能正常工作。


保存您的GitHub凭据

我推荐在线凭据存储,例如 lastpass.com

您需要保存:

  • 您的GitHub帐户密码
  • 您的2FA密钥
  • 您的2FA恢复代码
  • 您的个人令牌

LastPass

答案 2 :(得分:13)

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

密码缓存部分说:

  

如果您不想使用GitHub for Windows,可以下载   这里为您的操作系统提供帮助:

这样做,任何其他git.exe都可以在不要求密码的情况下工作。 :)