web-dev-qa-db-ja.com

認証を要求しないように、GitHub for WindowsなどのGitクライアントを構成する

Windows用のGitHubと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最後の3つのいずれかとgit.exes、ユーザー名の入力を求められます。しかし、Portable Gitはユーザー名を要求しません。次のスクリーンショットを参照してください。

enter image description here

ハート型のキャラクターは^C無視してください。

この場合、認証はどのように処理されますか?最終的には、最後の3つのGitに承認を求めないようにします。それはどうして可能ですか?

GitHubのGitで2つの追加ファイルを見つけましたが、それらがまったく重要であるとは思えません。

enter image description here

18
prongs

GitHub for Windows自体の場合、 Paul BettsGitHub staff )はG4Wにはすでにクレデンシャルヘルパーが含まれている(_に基づいて)CryptProtectおよび CryptProtectData関数
下記の his answer を参照してください。

G4Wを使用しない人のために、読んでください。


前の回答 に追加するには(コンソール/コマンドラインからGitHubにプッシュする場合):

~/.netrc(UNIXの場合)または%HOME%/_netrc(Windowsの場合)などのファイルは、GitHubへのすべてのgit Pushの認証情報の入力を回避するに役立ちます。

netrcファイルには、必要な数の認証情報を保存できます。
(GitHubまたはその他のリポジトリホスティングプロバイダー用)
だが:

  • メインのGitHubパスワードアカウントを保存したくない
  • あなたはそれらをプレーンテキストファイルにしたくない。

次のセクションでは、これらの問題について説明します。


GitHubアカウントで two-factor authentication(2FA)を有効にする

(2013年9月3日)

アプリケーションを介して2FAを構成する、常にアプリを介して、テキストSMSを介して(= /// =)決して回避できる場合。

その理由は、そのアクティブ化プロセスを通じて、2要素の秘密鍵にアクセスできるためです。これは、30秒ごとに第2要素認証を生成するために使用されます。

two factor secret string

こうすることで、任意のGAuth( Google Authenticator )クライアントにアクセスし、同じ2FA秘密鍵を入力して、の正確なあなたが得るであろう同じコードSMSメッセージ。
ただし、電話サービスがない場合でも機能します;)

もちろん、使用する 最初のクライアントは、Android電話またはあなたのiphoneのGAuth です。

GAuth on Android

つまり、SMSを待つ必要がなく、2FAを携帯電話に保持できます。

ただし、秘密鍵を持っていると、電話のクライアントに限定されません。
次のような他のクライアントに移動できます。

これらのすべてのクライアント(GAuthを使用する電話、デスクトップクライアントまたはWebページを使用)では、2要素の秘密鍵が必要です。

SMSを介して2FAをアクティブ化した場合:

  • あなたはあなたの秘密鍵を知りません
  • 他のGAuthクライアントは使用できません
  • トークンを受け取るのは携帯電話に限られます(電話サービスを利用している場合や、携帯電話を持っている場合)。

注:AndroidのGauthクライアントにキーを追加した場合、最初に上記の秘密キーを記憶していなければ、 allは失われません
(ただし、根ざした電話が必要です)

$ adb Shell
# sqlite3 /data/data/com.google.Android.apps.authenticator/databases/databases
sqlite> select * from accounts;
1|[email protected]|your2factorkey|0|0
sqlite> .quit
#exit

関連するリカバリコードを取得して保存することを忘れないでください(GitHubアカウントの Account Settingsセクションにあります)

Recovery code

(これらのコードを保存するには、whereに関する最後のセクションも参照してください)


_netrcファイルを暗号化する

credential helper netrc with git1.8.3 +を参照してください:gpg暗号化)

そのファイルでは、少なくとも次の2つの資格情報を暗号化する必要があります。

machine github.com
login username
password xxxx
protocol https

machine Gist.github.com
login username
password xxxx
protocol https

次に、~/.netrc.gpgまたは%HOME%/_netrc.gpgのみを保持します

ただし、上記の新しい2要素認証を有効にすると、「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 protected]>"
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://[email protected]/VonC/git/'  <=====

したがって、GitHubアカウントのDeveloperセクション(サブセクション Personal access tokens )に移動して、 Personal Access Token

Personal token

そのトークン2要素認証は必要ありません_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(WindowsのGnu) コマンド(sedを含む)の助けを借りて、Windowsでも機能します。


GitHubの認証情報を保存する

lastpass.comのようなオンライン認証情報ストレージをお勧めします

保存する必要があります:

  • GitHubアカウントのパスワード
  • 2FA秘密鍵
  • 2FA回復コード
  • 個人トークン

LastPass

42
VonC

GitHub for Windowsを使用している場合は、次のことを行うだけです。

  1. GUIアプリに少なくとも1回ログインしていることを確認してください
  2. 「Git Shell」リンクをクリックします

GitHubは、HTTPSおよびSSHベースのリモートの両方について、コマンドラインでこの問題をすでに解決しています

52
Ana Betts

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

パスワードキャッシングセクションは言う:

GitHub for Windowsを使用しない場合は、OSのヘルパーを次の場所からダウンロードできます。

そうすれば、他のgit.exeはパスワードを要求せずに機能します。 :)

13
prongs