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

pro*_*ngs 18 git github github-for-windows

我已经安装了GitHub for Windows和GitExtensions,并且在我的路径中有多个版本的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
Run Code Online (Sandbox Code Playgroud)

现在,当我git push origin master使用最后三个中git.exe的任何一个时,它会询问我的用户名.但Portable Git不会要求用户名.请参阅以下屏幕截图:

在此输入图像描述

心形的角色只是^C如此无视.

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

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

在此输入图像描述

Ana*_*tts 52

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

  1. 确保您至少登录过一次GUI应用程序
  2. 单击"Git Shell"链接

对于基于HTTPS和SSH的远程控制器,GitHub已经在命令行上为您解决了这个问题


Von*_*onC 42

对于Windows本身的GitHub,Paul Betts(GitHub工作人员)温和地提醒大家G4W已经包含了一个凭证助手(基于CryptProtect,我想这个CryptProtectData功能)
请参阅下面的答案.

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


要添加到我之前的答案(通过控制台/命令行推送到GitHub):

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

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

  • 您不想存储您的主GitHub密码帐户
  • 你不希望那些在纯文本文件中.

以下部分解决了这些问题:


在您的GitHub帐户上启用双因素身份验证(2FA)

(2013年9月3日)

如果可以避免,请通过应用程序配置2FA,始终通过应用程序,永远不要通过文本短信.

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

两个因素密码串

这样,您可以访问任何GAuth(Google身份验证器)客户端,输入相同的2FA密钥,并查看通过SMS消息获得的完全相同的代码.
除此之外,如果你没有电话服务,它仍然有效;)

当然,第一个使用的客户端是 Android手机或iphone上的GAuth.

Android上的GAuth

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

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

对于所有这些客户(使用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
Run Code Online (Sandbox Code Playgroud)

不要忘记获取然后保存相关的恢复代码(在Account SettingsGitHub帐户部分中):

恢复代码

(参阅关于最后一节,其中保存这些代码)


加密您的_netrc文件

(请参阅git1.8.3 +:gpg加密的凭证助手netrc)

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

machine github.com
login username
password xxxx
protocol https

machine gist.github.com
login username
password xxxx
protocol https
Run Code Online (Sandbox Code Playgroud)

然后你只保留一个~/.netrc.gpg%HOME%/_netrc.gpg

但是,如果您启用上述新的双因素身份验证,' 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/'  <=====
Run Code Online (Sandbox Code Playgroud)

因此,请转到DeveloperGitHub帐户(小节Personal access tokens)部分,并生成个人访问令牌:

个人令牌

该令牌不需要双因素身份验证:您可以在_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
Run Code Online (Sandbox Code Playgroud)

多行可读性:

gpg -d %HOME%\_netrc.gpg | 
  sed "s/yourPassord/YourPersonalAccessToken/g" | 
  gpg -e -r auser --yes -o %HOME%\_netrc.gpg
Run Code Online (Sandbox Code Playgroud)

甚至在Windows上也可以使用类似unix的GoW(Windows上的Gnu)命令,其中包括sed.


保存您的GitHub凭据

我推荐像lastpass.com这样的在线凭证存储

你需要保存:

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

LastPass的

  • 这个答案可能很长,但也是不正确的.没有人应该这样做.你能取消这个吗? (7认同)

pro*_*ngs 13

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

密码缓存部分说:

如果您不想使用GitHub for Windows,可以在此处下载适用于您的操作系统的帮助程序:

这样做,任何其他git.exe将无需密码即可使用.:)